2011-07-12 127 views
6

我想使用Netbeans在Java中创建一个小游戏。现在我有一个JFrame和两个JPanel。
JFrame包含JPanel和一个按钮。我的意图是点击这个按钮并调整其中一个JPanel(从0到> 0宽度)。
到现在为止我会调整大小的框架,但我不知道如何调整JPanel的大小。
这是我迄今所做的:从JFrame调整JPanel的大小

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

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

on click should expand frame and panel 
______________________ 
| _  _____  | 
| | |  |  | _| 
| | |  |  | | | 
| | |  |  | |>| -> 
| | |  |  | |_| 
| |_|  |_____|  | 
|______________________| 

这是JPanel中来调整

public class ToResize extends javax.swing.JPanel { 

    ... 

    public void resize(int width) { 
     this.setSize(new Dimension(this.getWidth() + width, this.getHeight())); 
    } 
} 

这是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(); 
    } 
} 
+0

+1为漂亮的图表 –

回答

5

1)if yo日子会把你调整的JFrame过,那么你必须调用

A/setPrefferedSize(getPrefferedSize()+-)JFrame.pack();

B/setPrefferedSize(getPrefferedSize()+-)panelToResize,然后调用JFrame.pack();

2 /如果你只改变大小中间人JPanelsJFrame大小保持不变,那么你必须拨打revalidate()repaint()panelToResize,

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

0

变化setSize()setPreferredSize()

1

我的目的是点击这个按钮并调整其中一个JPanels(从0到> 0的宽度)。

使用CardLayoutJSplitPane,或致电panel.setVisible(boolean)

+0

终于看起来像为'可停靠Panel' +1 – mKorbel

-2

你可以使用:

mainPanel.setResizeHorizontal(true); 
mainPanel.setResizeVertical(true) 

,你的问题将得到解决。

+0

请收拾这个答案;良好的语法和英语是很有用的,使用所提供的格式化工具一起 - 但特别是你要引用为什么这解决了这个问题。 –

0

我会以不同的方式做同样的事情。

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { 
    panelToResize.setVisible(!panelToResize.isVisible()); 
    if(panelToResize.isVisible()) { 
     jButton1.setText("<<"); 
    } else { 
     jButton1.setText(">>"); 
    } 
} 

为什么?

1 - 隐藏面板仍然工作就像一个可见的一个。

2 - 需要知道面板是否扩展? panelToResize.isVisible();

3 - 你的JFrame的布局仍然按预期工作。