0

動的に作成して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は、新しいテーブルを作成するように強制します。私がfinal知る限り、final変数は後で変更できないということですが、ここで何か問題がありますか?私はこれを正しい方法でやっていますか?

4

3 に答える 3

2

匿名の内部クラス内で変数(外部変数)を使用する場合は、finalとして宣言する必要があります。そのため、netbeansはあなたにそれを強制しています。

于 2013-02-28T09:01:44.157 に答える
1

最終変数は後で変更できませんが、whileループの外で最終ローカル変数を変更する必要がありますか?

はいの場合は、配列またはリストを作成し、そこに参照を保存します。

匿名内部クラス(リスナー)で参照を使用するには、finalが必要です。

于 2013-02-28T08:57:12.830 に答える
0

最終的な問題を回避するためにできること:

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));
于 2013-02-28T09:05:29.723 に答える