簡體   English   中英

JPanel文本的搜索欄

[英]Search bar for JPanel text

我已經編寫了一個Java程序,它具有一個CardLayout和每個卡的JPanel

JPanel包含長文本,我只需要實現一個小的“搜索欄”即可在查看的JPanel上搜索指定的文本。

它只需要突出顯示 JPanel 的搜索文本

為了使內容更清楚,我說的是類似Firefox的Chrome瀏覽器的搜索欄(ctrl-f),但它僅適用於我程序中的一個JPanel

這是一張照片。

在此處輸入圖片說明

可能嗎? 我怎樣才能做到這一點?

謝謝

最簡單的方法是創建一個小的搜索JPanel ,其位於文本上方JPanel 兩個JPanel都將在另一個JPanel 我將使用JTextFieldJButton ,因為我希望用戶可以控制何時進行搜索。

這是我的帶有搜索JPanel GUI之一。

Cobol段落結構

這是創建搜索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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM