我正在努力学习如何用Java编写Conway的生活游戏,而我却陷入了创建GUI的困境。我想在JFrame中创建一个JPanel,在South有一个更大的边框,然后在南边框有两个按钮,一个用于“Play”,一个用于“Restart”。但是Design元素不会让我调整大小或移动任何东西。通过进入代码并在南方创建一个更大的边框,我能够调整JPanel的大小,但我无法弄清楚如何调整JButton的大小。有什么想法吗?
(我正在使用Eclipse Kepler ......我听说NetBeans在这种方面做得更好,我应该抛弃Eclipse并尝试使用NetBeans吗?)
到目前为止,这是我的代码:
import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import java.awt.Color;
import java.awt.FlowLayout;
import javax.swing.JButton;
public class GameOfLife extends JFrame {
private JPanel contentPane;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
GameOfLife frame = new GameOfLife();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public GameOfLife() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 518, 508);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(10, 10, 50, 10));
contentPane.setLayout(new BorderLayout(0, 0));
setContentPane(contentPane);
JPanel panel = new JPanel();
panel.setBackground(Color.GRAY);
contentPane.add(panel, BorderLayout.CENTER);
JButton btnNewButton = new JButton("New button");
contentPane.add(btnNewButton, BorderLayout.SOUTH);
}
}
基本上,我不想做BorderLayout.SOUTH
,而是想在框架内手动将它放在我想要的位置。我也很想能够用JPanel做到这一点 - 整个北/西/南/东/中心的东西总体上看起来非常紧凑。它的方法是什么?
答案 0 :(得分:1)
也许您应该在Java文档中查看Swing Layouts:
A Visual Guide to Layout Managers
能够为您提供最大灵活性的布局是 GridBagLayout ,但您将编写大量代码以根据需要显示用户界面。
您将有一个详细的方式来使用以下官方教程: How to Use GridBagLayout
在你的代码中,你使用的是简单的BorderLayout,它非常简单但不是那么可配置。