2015-10-15 75 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這是非常簡單的,但沒有這麼多配置。