2014-02-20 44 views
-2

我的java swing界面中有兩個選項卡。一個標籤有客戶詳細信息表。當我點擊表格的一行時,我想切換到下一個選項卡。請幫幫我。我試過這個代碼。如何在單擊表格行時切換另一個選項卡

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

}  

而且我有例外。

Exception in thread "AWT-EventQueue-0" java.lang.IndexOutOfBoundsException: Index: 0, Tab count: 0 
+0

打印'jtb'的'TabCount'。並打印出'i'的值 –

+1

爲什麼不按照我上次的建議閱讀教程?此外,我的建議是_listen_改變選擇...(鼠標事件將改變選擇無論如何,沒有理由干涉) – kleopatra

回答

0

「我想切換到下一另一突出,當我點擊表中的行。」

你想要做的是將一個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 TablesHow 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(); 
      } 
     }); 
    } 
} 
+0

謝謝@peeskillet它的工作.. – Dilini

+0

你可能想採取一些行動,當選擇是_not_調整:-) @Dilini:添加一個'!'到if語句來忽略中間選擇變化 – kleopatra

+0

好的謝謝........ – Dilini

相關問題