gpt4 book ai didi

java - JPanel 文本的搜索栏

转载 作者:太空宇宙 更新时间:2023-11-04 07:30:30 25 4
gpt4 key购买 nike

我编写了一个java程序,它有一个CardLayout,每张卡片都有一个JPanel

JPanel 包含长文本,我只需要实现一个小“搜索栏”,仅在查看的 JPanel 上搜索指定文本。

它只需在 JPanel突出显示搜索到的文本即可。

为了说得更清楚,我正在谈论类似 Chrome 或 Firefox 搜索栏 (ctrl-f) 的东西,但它仅适用于我程序中的一个 JPanel

这是一张图片。

enter image description here

这可能吗?我怎样才能做到这一点?

谢谢

最佳答案

最简单的方法是创建一个位于文本 JPanel 上方的小型搜索 JPanel。两个 JPanel 都将位于另一个 JPanel 内。我会使用 JTextFieldJButton,因为我喜欢用户控制何时搜索。

这是我的 GUI 之一,带有搜索 JPanel

Cobol Paragraph Structure

下面是创建搜索 JPanel 的代码。请注意,我使用了 JPanel。仅当您想要重写组件方法之一时,才扩展 Swing 组件。

package gov.bop.cobol.paragraph.structure.view;

import gov.bop.cobol.paragraph.structure.model.ParagraphStructureModel;
import gov.bop.cobol.paragraph.structure.thread.SearchActionThread;

import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class SearchPanel {

protected JPanel panel;

protected JTextField findTextField;

protected ParagraphStructureFrame frame;

protected ParagraphStructureModel model;

public SearchPanel(ParagraphStructureFrame frame,
ParagraphStructureModel model) {
this.frame = frame;
this.model = model;
createPartControl();
}

protected void createPartControl() {
panel = new JPanel();
panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS));
panel.setBorder(BorderFactory.createEmptyBorder(6, 6, 6, 6));

JLabel findLabel = new JLabel("Search:");
panel.add(findLabel);

panel.add(Box.createRigidArea(new Dimension(6, 0)));

findTextField = new JTextField(30);
panel.add(findTextField);

panel.add(Box.createRigidArea(new Dimension(6, 0)));

JButton findButton = new JButton("Search");
findButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent event) {
String s = findTextField.getText().toUpperCase().trim();
if (!s.equals("")) {
findTextField.setText(s);
Thread thread = new Thread(new SearchActionThread(frame,
model, s));
thread.start();
}
}
});
panel.add(findButton);
}

public JPanel getPanel() {
return panel;
}

}

关于java - JPanel 文本的搜索栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17789829/

25 4 0