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

Java 在运行时调整JFrame中的JPanel大小,java,swing,jframe,jpanel,runtime,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.invalid

我试图实现一个按钮,使我的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

不过,我已经解决了!!在按钮的
ActionListener
之外,我有一个
myPanel.setPreferredSize(…)
调用。我必须在
ActionListener
中更新此首选大小,即

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

谢谢

在面板上使用LayoutManager你能发布完整的程序吗?啊,谢谢,你的帖子(@Java Learner)让我看了看ActionListener之外,注意到ActionListener内部没有更新的setPreferredSize()调用。。