Java 单击“表行”时如何切换其他选项卡

Java 单击“表行”时如何切换其他选项卡,java,swing,netbeans,Java,Swing,Netbeans,在我的JavaSwing界面中有两个选项卡。一个选项卡包含客户详细信息表。单击表中的一行时,我想切换到下一个其他选项卡。请帮帮我。我试过这个密码 private void jTable2MouseClicked(java.awt.event.MouseEvent evt) { int i = jtp.getSelectedIndex(); jtp.setSelecte

在我的JavaSwing界面中有两个选项卡。一个选项卡包含客户详细信息表。单击表中的一行时,我想切换到下一个其他选项卡。请帮帮我。我试过这个密码

        private void jTable2MouseClicked(java.awt.event.MouseEvent evt) {                                     
            int i = jtp.getSelectedIndex();
        jtp.setSelectedIndex(i == jtp.getTabCount() - 1 ? 0 : i + 1);

}    
我有个例外。

“单击表中的某一行时,我想切换到下一个其他选项卡。”

您要做的是向表的选择模型添加一个
ListSelectionListener
。当选择一行时,它将触发一个
ListSelectionEvent
。您可以将选项卡更改为您希望从那里更改为的任何索引

table.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
     @Override
     public void valueChanged(ListSelectionEvent e) {
          if (e.getValueIsAdjusting()) {
               tabs.setSelectedIndex(tabs.indexOfTab("Other Panel"));
          }
     }
});
查看并了解更多信息

完整示例

import java.awt.Color;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTabbedPane;
import javax.swing.JTable;
import javax.swing.SwingUtilities;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;

public class TableSelection {

    public TableSelection() {
        JTabbedPane tabPane = createTabPane();

        JFrame frame = new JFrame("Frame");
        frame.setContentPane(tabPane);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.pack();
        frame.setVisible(true);

    }

    private JTabbedPane createTabPane() {
        JTabbedPane pane = new JTabbedPane();
        JTable table = createTable(pane);
        pane.add(new JScrollPane(table), "Table Tab");
        JPanel panel1 = new JPanel();
        panel1.setBackground(Color.BLUE);
        pane.add(panel1, "Other Panel");
        return pane;
    }

    private JTable createTable(final JTabbedPane tabs) {
        String[][] data = {{"HELLO", "WORLD"}, {"HELLO", "WORLD"}};
        String[] cols = {"Hello", "World"};
        JTable table = new JTable(data, cols);
        table.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
            @Override
            public void valueChanged(ListSelectionEvent e) {
                if (e.getValueIsAdjusting()) {
                    tabs.setSelectedIndex(tabs.indexOfTab("Other Panel"));
                }
            }
        });

        return table;
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                new TableSelection();
            }
        });
    }
}

打印
jtb
TabCount
。还可以打印
i
的值,为什么不按照我上次建议的那样阅读教程?另外,我的建议是倾听选择的变化。。。(鼠标事件将改变选择,无需干涉)感谢@peeskillet的工作..当选择未调整时,您可能想采取一些措施:-)@Dilini:add a
到if语句以忽略中间选择更改
import java.awt.Color;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTabbedPane;
import javax.swing.JTable;
import javax.swing.SwingUtilities;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;

public class TableSelection {

    public TableSelection() {
        JTabbedPane tabPane = createTabPane();

        JFrame frame = new JFrame("Frame");
        frame.setContentPane(tabPane);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.pack();
        frame.setVisible(true);

    }

    private JTabbedPane createTabPane() {
        JTabbedPane pane = new JTabbedPane();
        JTable table = createTable(pane);
        pane.add(new JScrollPane(table), "Table Tab");
        JPanel panel1 = new JPanel();
        panel1.setBackground(Color.BLUE);
        pane.add(panel1, "Other Panel");
        return pane;
    }

    private JTable createTable(final JTabbedPane tabs) {
        String[][] data = {{"HELLO", "WORLD"}, {"HELLO", "WORLD"}};
        String[] cols = {"Hello", "World"};
        JTable table = new JTable(data, cols);
        table.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
            @Override
            public void valueChanged(ListSelectionEvent e) {
                if (e.getValueIsAdjusting()) {
                    tabs.setSelectedIndex(tabs.indexOfTab("Other Panel"));
                }
            }
        });

        return table;
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                new TableSelection();
            }
        });
    }
}