1

こんにちは開発者ボタンをクリックすると、jframeで2つのボタンとテーブルを使用しています。異なる行数の新しいテーブルを生成する必要があり、テーブルの行をクリックしている間、クリックすると行数と列数が再び表示されます別のボタンをクリックすると、新しい行数で新しいテーブルが作成され、もう一度クリックすると、行番号と列番号が表示されます

私はそれに次のコードを使用しています。初めてテーブルを作成すると正しい結果が生成されますが、テーブルを再度作成すると、任意の行をクリックすると、行 no と列 no -1 が表示されます。および範囲外の配列インデックス例外が私のコードで何が間違っているのかplz help

JTable table;
JScrollPane jsp;
Button b1 = new JButton("1");
Button b2 = new JButton("2");
add(b1);
add(b2);
b1.addActionListener (this);
b1.addActionListener (this);

public void actionPerformed(ActionEvent ae) {
    int i = 0;
    if (ae.getActionCommand().equals("1")) {
        i = 1;
    }
    if (ae.getActionCommand().equals("2")) {
        i = 2;
    }
    String title[] = {""};
    Object obj[][] = new Object[i][1];
    table = new JTable(obj, title);
    jsp = new JScrollPane(table);
    add(jsp);
    table.addMouseMotionListener(this);
}

public void mouseClicked(MouseEvent me) {
    // first time it returns the true result but on new table creation 
    //i and j are returned -1 .
    int i = table.getSelectedRow();
    int j = table.getSelectedColumn();
    System.out.println("i is" + i);
    System.out.println("j is" + j);
}
4

1 に答える 1

1

この例には他にもいくつかの問題がありますが、差し迫った問題を解決するには、のソースを取得し、MouseEventそれに対して操作を行う必要があります。

public void mouseClicked(MouseEvent me) {
    // first time it returns the true result but on new table creation 
    //i and j are returned -1 .
    JTable table = (JTable)me.getSource();
    int i = table.getSelectedRow();
    int j = table.getSelectedColumn();
    System.out.println("i is" + i);
    System.out.println("j is" + j);
}

問題は、新しいテーブル (行が選択されていない)ActionListenerに再割り当てしようとしていたことにありました。tableしたがって、最初のテーブルをクリックすると、2 番目のテーブル (行が選択されていない) に対しても同じ操作が行われます。

于 2012-10-10T13:59:47.823 に答える