0

次のコードは機能しますが、[値の表示]と[サイズ変更]ボタンを押した後でのみ機能します。値の表示とサイズ変更ボタンの両方を押すまで表示されません。[値の表示]ボタンのみが押されたときに表示するにはどうすればよいですか?

     public class myClass extends JFrame{
      String[] colNames = {"Item Name",
                    "Department",
                    "Original Price",
                    "Sales Price"};
     Object[][] input = {
     {"Kathy", "Smith",
     new Double(10), new Integer(5)},
     {"John", "Doe",
      new Double(10), new Integer(3)},
     {"Sue", "Black",
     new Double(10), new Integer(2)},
     {"Jane", "White",
      new Double(10), new Integer(20)},
     {"Joe", "Brown",
     new Double(10), new Integer(10)}
    };

    //display values
    JButton buttonDisplay = new JButton();
    buttonDisplay.setText("Display Values");
    container.add(buttonDisplay);        


    buttonDisplay.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent evt) {

            JTable jt = new JTable( input, colNames );
            JScrollPane pane = new JScrollPane( jt );
            jt.setPreferredScrollableViewportSize(
            new Dimension(200,200));
            pane.add(jt);
            container.add( pane );
            container.add(jt);
           /*Must use a JTextBox or JTable to display all the stored values for:
            * 
            * Item name 
                Department
                Original price
                Sale price 
            */
        }
    });
4

2 に答える 2

2

スクロールペインとテーブルの両方ではなく、スクロールペインを追加するだけで済みます。だから削除します

container.add(jt);

ライン。さらに、すでに表示されているものに何かを追加する場合は、javadocで説明されているようにContainerを無効にする必要があります。Container追加する

container.revalidate();
container.repaint();

テーブルを表示する必要があります。

于 2013-03-25T18:31:46.297 に答える
0

pack()新しいコンポーネントを追加した後、呼び出してみてください。これにより、JFrameのサイズがすべてに合うように変更されます。これは、あなたの「サイズ変更ボタン」が行っていることだと思います。

public void actionPerformed(ActionEvent evt) {
    // ... your other code ...
    container.pack();
}
于 2013-03-25T18:36:43.427 に答える