[英]Listeners to dynamically created Swing Components
我正在動態創建jTABLES
。 jTABLES
的數量取決於數據庫。
while(rset.next())
{
//Create Scroll Pane
JScrollPane newScrollPane = new JScrollPane();
//Create Table
JTable newTable = new JTable();
//Add Table to Scroll Pane
newScrollPane.setViewportView(newTable);
//Add Scroll Pane to a Tabbed Pane
jTabbedPane1.addTab(rset.getString(1),newTable);
}
我需要將MouseListener
添加到每個jTABLE
,它基本上是相同的偵聽器,相同的操作。
while(rset.next())
{
//Table Created.....
newTable.addMouseListener(new MouseListener() {
@Override
public void mouseClicked(MouseEvent e) {
String data = newTable.getValueAt(0,0).toString();
}
//More Abstract Methods...
});
}
Netbeans迫使我將新Table設為final
,據我所知, final
變量以后不能更改,這有什么問題嗎? 我這樣做正確嗎?
當您在匿名內部類中使用變量(外部變量)時,有必要將其聲明為final。 這就是netbeans強迫您這樣做的原因。
最終變量以后不能更改,但是您是否需要在while
循環之外更改最終局部變量?
如果是,插入數組或列表,然后將引用存儲在那里。
在匿名內部類(您的偵聽器)中使用引用需要final。
可以避免出現最后問題的方法:
創建另一個實現MouseListener的類。
class MyMouseListener extends MouseListener {
JTable table;
public MyMouseListener(JTable table) {
this.table = table;
}
然后以任何一種方法使用該表。
public void mouseClicked(MouseEvent e) {
String data = table.getValueAt(0,0).toString();
}
然后將該鼠標偵聽器添加到表中。
myTable.addMouseListener(new MyMouseListener(myTable));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.