jPanel和jButton定制

时间:2015-10-15 19:11:40

标签: java swing jframe jpanel jbutton

我正在努力学习如何用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做到这一点 - 整个北/西/南/东/中心的东西总体上看起来非常紧凑。它的方法是什么?

1 个答案:

答案 0 :(得分:1)

也许您应该在Java文档中查看Swing Layouts:

A Visual Guide to Layout Managers

能够为您提供最大灵活性的布局是 GridBagLayout ,但您将编写大量代码以根据需要显示用户界面。

您将有一个详细的方式来使用以下官方教程: How to Use GridBagLayout

在你的代码中,你使用的是简单的BorderLayout,它非常简单但不是那么可配置。