web-dev-qa-db-ja.com

ボタンをクリックしてjTabbedPaneのタブを切り替える方法は?

JTabbedPane1と2の2つのJTabbedPanesがあります。JTabbedPane2のボタンを押してJTabbedPane1を表示するにはどうすればよいですか。

JTabbedPaneのコードは次のとおりです。

public class TabbedPane extends JFrame {

    public TabbedPane() {


        setTitle("Tabbed Pane");  
        setSize(300,300); 

        JTabbedPane jtp = new JTabbedPane();

       getContentPane().add(jtp);

       JPanel1 jp1 = new JPanel1();//This will create the first tab

       JPanel jp2 = new JPanel2();//This will create the second tab

       //add panel .........

    //example usage
     public static void main (String []args){
        TabbedPane tab = new TabbedPane();
    }

}

ここにクラスJPane1があります:

...    JLabel label1 = new JLabel();
       label1.setText("This is Tab 1");
       jp1.add(label1);

intにボタンがあるJpane2クラス

JButton test = new JButton( "Press"); jp2.add(test);

ButtonHandler phandler = new ButtonHandler();
test.addActionListener(phandler);
setVisible(true); 

Jpanel2のボタンのActionListenerに問題があります

class ButtonHandler implements ActionListener{
       public void actionPerformed(ActionEvent e){
              // what i do now ? to call  jpanel 1 show ![alt text][1]
       }
}

alt text

19
tiendv

タブ付きペインをButtonHandlerからアクセスできるようにすると、次のようになります。

class ButtonHandler implements ActionListener{
       public void actionPerformed(ActionEvent e){
              jtp.setSelectedIndex(0);
       }
}

これを行うには、jtp(より適切な名前が望ましい)をゲッターメソッドを使用してプライベート属性にするか、ButtonHandlerのコンストラクタ引数として渡すことができます。

40
Ventral

メソッドJTabbedPane.setSelectedIndex(int index)を、必要なタブのインデックスとともに使用する必要があります。

7
Guillaume

非常に簡単です。以下のコードを使用します。

JTabbedpane.setSelectedIndex(); 

jパネルの名前が何であれ、Jパネルを上記のJTabbedpaneに置き換えます。たとえば、最初のタブを選択するには、0を角かっこで囲み、2番目のタブを選択する場合は、1を角かっこで囲みます。例:Jタブ付きペインはjtabbedpanelと呼ばれ、最初のタブが必要な場合、行は次のようになります。

jtabbedpanel.setSelectedIndex(0);

お役に立てれば!!

1
sidd

アクションリスナーがタブと同じクラスにある必要があることを追加したいだけです。

0
JohnnyQ