-1

いいタイトルが見当たらず、申し訳ありませんでした。

あなたが下を見るように、私は電話しました

ssframe.add(new JScrollPane(table),BorderLayout.CENTER);

3 回、typeButton をクリックしてから unitButton をクリックすると、画面上に 2 つのテーブルが作成されます。ボタンがクリックされるたびに 1 つのテーブルを作成したいのですが、どうすればよいですか。

    private class searchListener implements ActionListener
    {
        @Override
        public void actionPerformed(ActionEvent e)
        {
            JButton clickd = (JButton)e.getSource();
            if (clickd==typeButton)
                {
                    try
                        {
                            SwingUtilities.updateComponentTreeUI(ssframe);
                            showTable1("type",typefield.getText());
                            ssframe.add(new JScrollPane(table),BorderLayout.CENTER);
                        }catch(Exception a)
                        {
                            a.printStackTrace();
                            JOptionPane.showMessageDialog(null,"Error Code = 0112");
                        }
                }
            else if (clickd==unitButton)
                {
                    try
                        {
                            SwingUtilities.updateComponentTreeUI(frame);
                            showTable1("unit",unitfield.getText());
                            ssframe.add(new JScrollPane(table),BorderLayout.CENTER);
                        }catch(Exception a)
                        {
                            a.printStackTrace();
                            JOptionPane.showMessageDialog(null,"Error Code = 0112");
                        }
                }
            else if (clickd==priceButton)
                {
                    try
                        {
                            SwingUtilities.updateComponentTreeUI(frame);
                            showTable3("price",Integer.parseInt(pricefield.getText()));
                            ssframe.add(new JScrollPane(table),BorderLayout.CENTER);
                        }catch(Exception a)
                        {
                            a.printStackTrace();
                            JOptionPane.showMessageDialog(null,"Error C0de = 0112");
                        }
                }
        }

編集:私が問題を修正した人を助けるかもしれません:

model.setRowCount(0);
model.fireTableDataChanged();
4

1 に答える 1

4

これを行う方法はいくつかあります。

  1. への参照を維持し、表示するテーブルを提供して、JScrollPaneを使用してそのビューを置き換えることができます。フレームに残りsetViewportViewますJScrollPane
  2. (できれば) テーブルのテーブル モデルを更新します。これにより、コンテンツが置き換えられ、UI が更新されます。これは、JScrollPaneJTableが単一の参照として維持され、モデルを変更するだけであることを意味します。
  3. 別の解決策はCardLayout、必要に応じてビューを切り替えることができるを使用することです。
  4. 新しいコンポーネントを追加する前に、以前に追加したコンポーネントを削除するのは本当に悪い考えです...
于 2015-01-03T02:53:58.413 に答える