我想用Netbeans在Java中创建一个小游戏。现在我有一个JFrame和两个JPanel
JFrame包含JPanel和一个按钮。我的意图是单击此按钮并调整其中一个JPanels(从0到> 0宽度)。
直到现在我都试图调整帧的大小,但我无法弄清楚如何调整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 :(得分:5)
1)如果您也要调整JFrame的大小,那么您必须调用
setPrefferedSize(getPrefferedSize()+-)
{/ 1}} JFrame.pack();
,然后致电setPrefferedSize(getPrefferedSize()+-)
2 /如果您只更改panelToResize
和JFrame.pack();
尺寸保持不变的尺寸,那么您必须致电JPanels
加JFrame
来revalidate()
,
3 /但一切都取决于使用LayoutManager
答案 1 :(得分:1)
我的目的是点击此按钮并调整其中一个JPanel(从0到> 0宽度)。
使用CardLayout
或JSplitPane
,或致电panel.setVisible(boolean)
。
答案 2 :(得分:0)
将setSize()
更改为setPreferredSize()
答案 3 :(得分: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上的布局仍然按预期工作。
答案 4 :(得分:-2)
你可以使用:
mainPanel.setResizeHorizontal(true);
mainPanel.setResizeVertical(true)
你的问题将得到解决。