在运行时调整JFrame中的JPanel大小

时间:2014-06-05 13:33:45

标签: java swing jframe jpanel runtime

我正在尝试实现一个按钮,以使我的JFrame和JPanel更大(按相同的数量),但它似乎不起作用。

myPanel.setPreferredSize(new Dimension(50, 50));
button1.addActionListener(new ActionListener(){
   public void actionPerformed(ActionEvent e){
      getContentPane().remove(myPanel);
      myPanel.invalidate();

      myPanel.setMinimumSize(new Dimension(myPanelWidth, myPanelHeight+100));
      myPanel.setBounds(new Rectangle(myPanel.getBounds().getX(), myPanel.getBounds.getY(), myPanel.getBounds().getWidth(), myPanel.getBounds().getHeight+100));
      getContentPane().setBounds(new Rectangle(myFrameX, myFrameY, myFrameWidth, myFrameHeight+100));
      getContentPane().add(myPanel, BorderLayout.SOUTH);
      System.out.println(myPanel.getBounds().getHeight());

      myPanel.validate();
      myPanel.repaint();

问题是我的框架正确调整大小 - 它变大了100个单位,但面板没有。我不确定我是否正确验证和重新粉刷。我做错了什么?

编辑:修复!我需要setPreferredSize()内的ActionListener更新。

1 个答案:

答案 0 :(得分:0)

没关系,我修好了!!在按钮的ActionListener之外,我有一个myPanel.setPreferredSize(...)电话。我必须在ActionListener内更新这个首选大小,即

myPanel.setPreferredSize(new Dimension(myPanelWidth, myPanelHeight+100));

谢谢!