1

私はJavaSwingsを使用してGUIを作成しようとしています。私はJavaSwingsの初心者です。私の主なアイデアは、2つのタブを作成し、タブの1つにボタンを追加することでした。

タブごとに個別のクラスを作成したかったので、3つのクラスを作成しました。そのうちの1つはメインメソッドを持ち、他の2つはタブを表します。

タブの1つで、中央にボタンを追加し、そのボタンにアクションリスナーを追加したいと思いました。

以下は、mainメソッドを持つクラスです。

public class abc {
    JFrame frame;
    JTabbedPane tabPane;
    ImageIcon close;
    Dimension size;
    int tabCounter = 0;
    abc_export exp;
    abc_import imp;
    public static void main(String[] args) {
        abc jtab = new abc();
        jtab.start();
    }
    public void start(){
    exp=new abc_export();
    imp=new abc_import();
    tabPane.addTab(null, exp.panel);
    tabPane.addTab(null, imp.panel);
    tabPane.setTabComponentAt(tabPane.getTabCount()-1, exp.tab);
    tabPane.setTabComponentAt(tabPane.getTabCount()-1, imp.tab);
    }

    public abc() {
        //  Create a frame
        frame = new JFrame();
        //  Create the tabbed pane.
        tabPane = new JTabbedPane();
        //  Create a button to add a tab
        //  Create an image icon to use as a close button
        close = new ImageIcon("C:/JAVAJAZZUP/tabClose.gif");
        size = new Dimension(close.getIconWidth()+1, close.getIconHeight()+1);
        //Adding into frame
        frame.add(tabPane, BorderLayout.CENTER);
        frame.setSize(300, 300);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
        }

};

以下は、タブの1つのコードです。ただし、他のタブにも同じコードがあり、クラス名が異なる他のタブを表しています。

public class abc_import {
    ImageIcon close;
    Dimension size;
    int tabCounter = 0;
    JPanel tab;
    final JPanel panel;
    public abc_import() {
        close = new ImageIcon("C:/JAVAJAZZUP/tabClose.gif");
        size = new Dimension(close.getIconWidth()+1, close.getIconHeight()+1);
        //Adding into frame
        JLabel label = null;
        panel = new JPanel();
        //  Create a panel to represent the tab
        tab = new JPanel();
        tab.setOpaque(false);
        String str = "abc_import";
        label = new JLabel(str);
        tab.add(label, BorderLayout.WEST);
        }
};

予想通り、両方のタブが作成されますが、タブの1つにボタンを追加することについては考えられません。

ここでの私の質問は、すでに述べたようにタブの1つにボタンを追加したい場合です。何をする必要がありますか?誰かが私を助けてくれますか?

4

2 に答える 2

3

あなたの意図を理解しているかどうかはわかりませんが、 How to Use Tabbed Panes: Tabs With Custom ComponentsTabComponentsDemoで説明されている に示されているアプローチを試すことができます。

関連する例を次に示します

于 2012-12-16T13:50:43.223 に答える
2

setTabComponentAtメソッドを使用して試すことができます。

この方法にはパラメータがsetTabComponentAt(int index, Component component)あり、必要なコンポーネントについて言及するだけです。

こちらのリンクを参照してください。

于 2012-12-16T14:19:08.500 に答える