2017-06-10 7 views
0

Javaへの新しい各種機能のまわりで私の頭を取得しようとイム、私の現在の頭痛は、私は3つのタブ(JScrollPaneにプラスJTableの)を保持それぞれとのJTabbedPaneを持っているのMouseListenerのMouseListenerとタブ付き行検出

である私が今必要どのタブのどの行がクリックされているかを検出し、問題にぶつかる。

最初のペインに単一のリスナーを配置して、どのタブが選択されているかを検出する必要がありますか?それとも各JTableに1つずつ置くのですか?

私は、次のコードを試してみましたが、私はそれを実行したとき、私は、NetBeans上で実行すると、それは誤り

standardTable.addMouseListener(new MouseAdapter() { 
    @Override 
    public void mouseClicked(MouseEvent e) { 
    JTabbedPane aPane = (JTabbedPane)e.getComponent(); 
    if(e.getClickCount()==2) { 
     detectMouseClickRow(aPane, e); 
    } // do this if double click 
    if(e.getClickCount()==1) { 
     detectSingleClick(aPane, e); 
    } // Do this if its a single click 
    } 
}); 

を行い、何らかの理由でどこに問題が、doesntのリストに私を警告し、私はそれとそのエラーを無視detectMouseClickRow(aPane、e)にあります。またはそのシングルクリックバリアント

にClassCastException:javax.swing.JTableのはjavax.swing.JTabbedPane

をキャストすることはできません私はprollyここにそれが間違って取得していますし、これではないので、私はポインタを行うことができます使用する最良の方法は?

+0

メッセージは自己説明的です。そこで、コード内でJTabbedPaneにObjectをキャストしようとします。このエラーは、ObjectがJTableであるため、JTableにObjectをキャストする必要があることを示しています。これは、JTabbedPaneではなくJTableにリスナーを追加するので意味があります。そのため、JTabbedPaneであると思われる理由がわかりません。 – camickr

答えて

0

あなたは、私が今e.getComponent()によってMouseEvent Eからコンポーネントを取得するとき、あなたはJTableを取得する、JTableであると仮定しstandardTableにMouseListenerを追加しています。したがって、キャストJTabbedPane aPane = (JTabbedPane)e.getComponent();は正しくありません。 実際に、それはあなたがタブ付きペインにJTableを追加する方法に応じてgetParent()を使用してJTableからJTabbedPaneを得ることができる、今JTable aPane = (JTable)e.getComponent();

でなければなりません。

+0

「質問にその部分は見ませんでした」 - あなたはそれを見る必要はありません。それについて少し考えてみてください。あなたは、タブ付きペインにMouseListenerを追加することをお勧めします。さて、ユーザーがタブをクリックすると、何が起こるのですか?ユーザーはテーブル内の行を選択するための変更を行っていないので、現在選択されている行をどのように取得できますか? – camickr

0

は、すべてのアイブ氏はゆっくりとそれを整理し、 はい、それはJTableの 私が削除していた問題だったようJTabbedPaneのにキャスト上の誤りがありましたが、私はそれを行うにはどのような方法を見つけることができませんありがとう、。

申し訳ありません。

+0

これは答えではありません。削除ボタンをクリックして回答を削除します。追加のコメントがある場合は、そのコメントで質問を編集します。すべての情報を1か所に保管してください。また、質問の削除ボタンもあります。その質問のために指定した "java ActionListener"タグのすぐ下になければなりません。 – camickr

関連する問題