[英]Search bar for JPanel text
我已經編寫了一個Java程序,它具有一個CardLayout
和每個卡的JPanel
。
JPanel
包含長文本,我只需要實現一個小的“搜索欄”即可在查看的JPanel
上搜索指定的文本。
它只需要突出顯示 JPanel
的搜索文本 。
為了使內容更清楚,我說的是類似Firefox的Chrome瀏覽器的搜索欄(ctrl-f),但它僅適用於我程序中的一個JPanel
。
這是一張照片。
可能嗎? 我怎樣才能做到這一點?
謝謝
最簡單的方法是創建一個小的搜索JPanel
,其位於文本上方JPanel
。 兩個JPanel
都將在另一個JPanel
。 我將使用JTextField
和JButton
,因為我希望用戶可以控制何時進行搜索。
這是我的帶有搜索JPanel
GUI之一。
這是創建搜索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;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.