如何在点击按钮时显示JTable?

时间:2013-03-25 18:22:44

标签: java swing jtable

以下代码有效,但仅在按下显示值和调整大小按钮后才能使用。直到我按下显示值并按下调整大小按钮后才会出现。如果仅按下“显示值”按钮,如何使其显示?

     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 
            */
        }
    });

2 个答案:

答案 0 :(得分:1)

您只需添加滚动窗格,而不是滚动窗格和表格。所以删除

container.add(jt);

线。此外,如果您向已经可见的Container添加内容,则应按照javadoc中的说明使Container无效。添加

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

应该使表格可见。

答案 1 :(得分:0)

添加新组件后尝试调用pack()。这将调整您的JFrame大小以适应所有内容。这就是我假设你的"调整大小按钮"正在做。

public void actionPerformed(ActionEvent evt) {
    // ... your other code ...
    container.pack();
}