从JFrame调整JPanel的大小

mas*_*taH 7 java swing netbeans jpanel jframe

我想用Netbeans在Java中创建一个小游戏.现在我有一个JFrame和两个JPanel.
JFrame包含JPanel和一个按钮.我的意图是单击此按钮并调整其中一个JPanel(从0到> 0宽度).
直到现在我都试图调整帧的大小,但我无法弄清楚如何调整JPanel的大小.
这是我到目前为止所做的:

Structure
   frame
    |_ panel 1
    |_ panel 2
    |_ button

 __________________
|  _        _      |
| | |      | |    _|
| | |      | |   | |
| | |      | |   |>|  
| | |      | |   |_|
| |_|      |_|     |
|__________________|

on click should expand frame and panel
 ______________________
|  _        _____      |
| | |      |     |    _|
| | |      |     |   | |
| | |      |     |   |>|  ->
| | |      |     |   |_|
| |_|      |_____|     |
|______________________|
Run Code Online (Sandbox Code Playgroud)

这是要调整大小的JPanel

public class ToResize extends javax.swing.JPanel {

    ...

    public void resize(int width) {
        this.setSize(new Dimension(this.getWidth() + width, this.getHeight()));
    }
}
Run Code Online (Sandbox Code Playgroud)

这是带按钮的JFrame

public class MyFrame extends javax.swing.JFrame {

    ...

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
        if (panelToResize.getWidth() == 0) {
            panelToResize.resize(100);
        } else {
            panelToResize.resize(-100);
        }
        validate();
    }
}
Run Code Online (Sandbox Code Playgroud)

mKo*_*bel 5

1)如果你也要调整JFrame的大小,那么你必须打电话

a/setPrefferedSize(getPrefferedSize()+-)forJFrame.pack();

b/setPrefferedSize(getPrefferedSize()+-)for panelToResize然后打电话JFrame.pack();

2 /如果你只改变大小中间人JPanelsJFrame大小保持仍然存在,那么你必须调用revalidate()repaint()panelToResize,

3 /但一切都取决于使用的LayoutManager