0

私は今、私のプログラムを運命づけているひどい問題を抱えています。カスタムモデルを持つ Jtable を介して ScrollPane に要素を追加できるようです。要素を追加したり、テーブルが更新されたり、行が表示されたりしても問題ありません。本当の問題は、要素を削除してもテーブルが更新されないことです。実際のところ、アプレットを最小化してから再度表示すると、すべての要素が消えてしまいますが! 問題は、新しい要素を追加しようとすると、追加すると配列サイズが大きくなり、それらを印刷すると新しい要素が表示されても、ScrollPane に表示されないことです。私は多くのことを試しましたが(再描画などでわかります)、他に何ができるかわかりません。助けてくれてありがとう:)

    modelx = new HumanListModel();
    final JTable newbiex = new JTable(modelx);  

    newbiex.setDefaultRenderer(Human.class, new HumanRenderer());
    newbiex.setFillsViewportHeight(true);
    newbiex.setVisible(true);
    playerViewer.setViewportView(newbiex);


    removeIndividual.addActionListener(new ActionListener()
    {

        public void actionPerformed(ActionEvent event)
        {

            playerViewer.remove(newbiex.getSelectedRow());
            playerViewerExhibition.remove(newbiex.getSelectedRow());
            ///modelx.remove(newbiex.getSelectedRow());///

            modelx.removeElementAt(newbiex.getSelectedRow());

            indexPoint -= 1;///helps keep track of index///

            newbiex.repaint();
            newbiex.revalidate();
            newbiey.repaint(); ///table on another tab using modelx///
            newbiey.revalidate();///table on another tab///
            playerViewer.repaint();
            playerViewer.revalidate();
            System.out.println(modelx.size());

        }
    });
4

2 に答える 2

2
modelx.removeElementAt(newbiex.getSelectedRow());

TableModel にはこの名前のメソッドがないため、カスタム メソッドを作成する必要があります。このメソッドが を呼び出すことを確認してくださいfireTableRowsDeleted(...)。これがどのように行われるかは、いつでも DefaultTableModel のソース コードを見ることができます。

newbiex.repaint();
newbiex.revalidate();
newbiey.repaint(); ///table on another tab using modelx///
newbiey.revalidate();///table on another tab///
playerViewer.repaint();
playerViewer.revalidate();

上記のコードは必要ありません。モデルから適切なイベントを発生させると、テーブルは自動的に再描画されます。

アプレットを最小化してから再度表示すると、すべての要素が消えてしまいますが! 問題は、新しい要素を追加しようとすると、追加すると配列サイズが大きくなり、それらを印刷すると新しい要素が表示されても、ScrollPane に表示されないことです。私は多くのことを試しましたが(再描画などでわかります)、他に何ができるかわかりません。助けてくれてありがとう:)

TableModel を正しく実装していないと思います。を使ってみてくださいDefaultTableModel。行の動的な追加/削除をサポートしています。

または、 Row Table Modelを確認できます。いくつかのメソッドを実装するだけで済みます。JButtonTableModel は、これを行う方法の簡単な例を示しています。

于 2013-06-05T15:58:59.303 に答える
-1

これは JTable の一般的な問題です。通常、すべてのコードが実行された後に可視性をリセットします。

JTable.setVisible(false);
JTable.setVisible(true);

わたしにはできる..

于 2013-06-05T15:56:23.473 に答える