2015-10-15 64 views
0

我在学习如何在Java中编写康威的生活游戏,并且我陷入了创建GUI的困境。我想在JFrame中创建一个JPanel,在南部有一个较大的边界,然后在南部边界有两个按钮,一个用于“播放”,一个用于“重新启动”。但设计元素不会让我调整大小或移动任何东西。我可以通过进入代码并在南部创建一个更大的边界来调整JPanel的大小,但我无法弄清楚如何调整JButton的大小。有任何想法吗?jPanel和jButton定制

(我使用Eclipse开普勒......我听说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

您将布局设置为BorderLayout,以便在此处限制自己。因为我不再在挥杆工作,所以无法帮助你。但如果你可以使用java 1.8,那么我会建议使用javafx。 –

+0

按钮有一个边距属性,它会影响其内部大小,可以与它对齐 – MadProgrammer

+0

然后将按钮放到JPanel上,然后将面板添加到南面位置 – MadProgrammer

回答

1

也许你应该看看Swing的布局Java文档:

A Visual Guide to Layout Managers

并能够给你最大的灵活性的布局是的GridBagLayout,但你会写很多代码显示用户界面作为您的需求。

你将有一个的相关详细的路要走,连同以下官方教程: How to Use GridBagLayout

在代码中,您使用的是简单的BorderLayout这是非常简单的,但没有这么多配置。