「我想切換到下一另一突出,當我點擊表中的行。」
你想要做的是將一個ListSelectionListener
添加到表的選擇模型。當選中一行時,它會觸發一個ListSelectionEvent
。您可以將選項卡更改爲您希望從中更改的任何索引。
table.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent e) {
if (e.getValueIsAdjusting()) {
tabs.setSelectedIndex(tabs.indexOfTab("Other Panel"));
}
}
});
見How to Use Tables和How to Write ListSelectionListeners瞭解更多信息。
完整的示例
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'的值 –
爲什麼不按照我上次的建議閱讀教程?此外,我的建議是_listen_改變選擇...(鼠標事件將改變選擇無論如何,沒有理由干涉) – kleopatra