【发布时间】:2013-10-15 20:34:38
【问题描述】:
在下面的代码中,我使用 gridbaglayout 在 600 X 400 的帧大小上以两行显示所有按钮。在下面的代码中注释掉 setSize() 或 pack() 没有帮助。我的问题是如何获得尺寸为 600 X 400 的框架,框架底部有一个带有字母按钮的面板。感谢您的帮助。
import javax.swing.*;
import java.awt.GridBagConstraints;
import java.awt.GridLayout;
import java.awt.event.*;
public class HangmanGUI {
public static void main(String[] args){
new HangmanGUI();
}
//constructor for Hangman
/**
* Instantiates a new hangman gui.
*/
public HangmanGUI() {
JFrame myframe= new JFrame();
JPanel myPanel = new JPanel();
myPanel.setLayout(new GridLayout());
GridBagConstraints gbc = new GridBagConstraints();
myframe.setSize(600,400);
int x =0; int y=5;
for (char alphabet = 'A';alphabet<='Z';alphabet++){
gbc.gridx=x;
gbc.gridy=y;
myPanel.add(new JButton(alphabet+""),gbc);
x++;
if (x>15){
y =6;x=0;
}
}
myframe.add(myPanel);
myframe.pack();
myframe.setTitle("Hangman Game");
myframe.setVisible(true);
myframe.setLocationRelativeTo(null);
myframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
【问题讨论】:
-
Pack 根据其子容器的首选大小计算窗口大小。你需要想办法让主容器的大小符合你的期望......
-
你为什么痴迷于设置框架的大小???这不是您构建 GUI 的方式。你倒着想。框架的大小应由添加到框架的组件的首选大小决定。
标签: java swing jframe layout-manager gridbaglayout