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);

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

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 回答