2013-07-21 38 views
0

我想將我在JTable中選擇的項目的名稱放入JLabel中,每當我單擊表格中的新項目時JLabel中的文本也發生變化 有人可以告訴我,我應該在java中學習什麼?在JLabel中顯示錶格中的項目名稱

+0

您應該首先介紹java的swing框架。然後看看JTable文檔:http://docs.oracle.com/javase/6/docs/api/javax/swing/JTable.html – Addict

回答

2

你應該知道非常基本的Swing編程和TableModel的更深一點的瞭解, SelectionModelListSelectionListener(這是你的目標的關鍵)。

工作的示例:

import java.awt.BorderLayout; 

import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JTable; 
import javax.swing.event.ListSelectionEvent; 
import javax.swing.event.ListSelectionListener; 

public class TableSelectionToLabel { 
    private static JTable t = new JTable(new String[][]{{"1,1", "1,2"}, {"2,1", "2,2"}}, 
          new String[]{"1", "2"}); 
    private static JLabel l = new JLabel("Your selction will appear here"); 
    private static JFrame f = new JFrame("Table selection listener Ex."); 
    private static ListSelectionListener myListener = new ListSelectionListener() { 
     @Override 
     public void valueChanged(ListSelectionEvent e) { 
      int col = t.getColumnModel().getSelectionModel().getLeadSelectionIndex(); 
      int row = t.getSelectionModel().getLeadSelectionIndex(); 
      try { 
       l.setText(t.getModel().getValueAt(row, col).toString()); 
      } catch (IndexOutOfBoundsException ignore) { 

      } 
     } 
    }; 

    public static void main(String[] args) { 
     t.getSelectionModel().addListSelectionListener(myListener); 
     t.getColumnModel().getSelectionModel().addListSelectionListener(myListener); 
     f.getContentPane().add(t, BorderLayout.NORTH); 
     f.getContentPane().add(l, BorderLayout.CENTER); 
     f.pack(); 
     f.setVisible(true); 
    } 
} 

編輯:

我修改了代碼,以聽取模型列模型都選擇活動,以獲得更準確的結果。

1

首先創建JLabel

JLabel label = new JLabel(); 

然後一個監聽器添加到表選擇:

table.getSelectionModel().addListSelectionListener(new ListSelectionListener() { 
    public void valueChanged(ListSelectionEvent event) { 
     label.setText(table.getValueAt(table.getSelectedRow(), table.getSelectedColumn())); 
    } 
}); 
相關問題