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