2015-09-26 71 views
1

我想寫一個「4連續」遊戲的GUI ... 所以我寫了一個帶有一個JPanel的JFrame,它有一個GridLayout。 後來我加了一些Jbutton將與Jlabel之下,但是當我運行PROGRAMM,也只是一個空架... :( 這裏是我的代碼:JFrame中的組件不顯示

import java.awt.*; 
import javax.swing.*; 

public class GUI{ 

/** 
* Constructor of the GUI 
*/ 
public GUI(){ 
    JFrame jf = new JFrame("4 Gewinnt"); 
    jf.setVisible(true); 
    jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    jf.setSize(700, 800); 
    JPanel jp = new JPanel(); 
    jp.setLayout(new GridLayout(8,7,0,0)); 
    jp.setComponentOrientation(ComponentOrientation.LEFT_TO_RIGHT); 
    jp.setVisible(true); 

    //Row Buttons 
    JButton button0 = new JButton("Spalte 0"); 
    JButton button1 = new JButton("Spalte 1"); 
    JButton button2 = new JButton("Spalte 2"); 
    JButton button3 = new JButton("Spalte 3"); 
    JButton button4 = new JButton("Spalte 4"); 
    JButton button5 = new JButton("Spalte 5"); 
    JButton button6 = new JButton("Spalte 6"); 
    jp.add(button0); 
    jp.add(button1); 
    jp.add(button2); 
    jp.add(button3); 
    jp.add(button4); 
    jp.add(button5); 
    jp.add(button6); 




    //Row 0Labels 
    JLabel label00 =new JLabel("Label 00"); 
    JLabel label10 =new JLabel("Label 10"); 
    JLabel label20 =new JLabel("Label 20"); 
    JLabel label30 =new JLabel("Label 30"); 
    JLabel label40 =new JLabel("Label 40"); 
    JLabel label50 =new JLabel("Label 50"); 
    JLabel label60 =new JLabel("Label 60"); 
    jp.add(label00); 
    jp.add(label10); 
    jp.add(label20); 
    jp.add(label30); 
    jp.add(label40); 
    jp.add(label50); 
    jp.add(label60); 

    //Row 1Labels 
    JLabel label01 =new JLabel("Label 00"); 
    JLabel label11 =new JLabel("Label 10"); 
    JLabel label21 =new JLabel("Label 20"); 
    JLabel label31 =new JLabel("Label 30"); 
    JLabel label41 =new JLabel("Label 40"); 
    JLabel label51 =new JLabel("Label 50"); 
    JLabel label61 =new JLabel("Label 60"); 
    jp.add(label01); 
    jp.add(label11); 
    jp.add(label21); 
    jp.add(label31); 
    jp.add(label41); 
    jp.add(label51); 
    jp.add(label61); 

    //Row 2Labels 
    JLabel label02 =new JLabel("Label 00"); 
    JLabel label12 =new JLabel("Label 10"); 
    JLabel label22 =new JLabel("Label 20"); 
    JLabel label32 =new JLabel("Label 30"); 
    JLabel label42 =new JLabel("Label 40"); 
    JLabel label52 =new JLabel("Label 50"); 
    JLabel label62 =new JLabel("Label 60"); 
    jp.add(label02); 
    jp.add(label12); 
    jp.add(label22); 
    jp.add(label32); 
    jp.add(label42); 
    jp.add(label52); 
    jp.add(label62); 

    //Row 3Labels 
    JLabel label03 =new JLabel("Label 00"); 
    JLabel label13 =new JLabel("Label 10"); 
    JLabel label23 =new JLabel("Label 20"); 
    JLabel label33 =new JLabel("Label 30"); 
    JLabel label43 =new JLabel("Label 40"); 
    JLabel label53 =new JLabel("Label 50"); 
    JLabel label63 =new JLabel("Label 60"); 
    jp.add(label03); 
    jp.add(label13); 
    jp.add(label23); 
    jp.add(label33); 
    jp.add(label43); 
    jp.add(label53); 
    jp.add(label63); 

    //Row 4Labels 
    JLabel label04 =new JLabel("Label 00"); 
    JLabel label14 =new JLabel("Label 10"); 
    JLabel label24 =new JLabel("Label 20"); 
    JLabel label34 =new JLabel("Label 30"); 
    JLabel label44 =new JLabel("Label 40"); 
    JLabel label54 =new JLabel("Label 50"); 
    JLabel label64 =new JLabel("Label 60"); 
    jp.add(label04); 
    jp.add(label14); 
    jp.add(label24); 
    jp.add(label34); 
    jp.add(label44); 
    jp.add(label54); 
    jp.add(label64); 

    //Row 5Labels 
    JLabel label05 =new JLabel("Label 00"); 
    JLabel label15 =new JLabel("Label 10"); 
    JLabel label25 =new JLabel("Label 20"); 
    JLabel label35 =new JLabel("Label 30"); 
    JLabel label45 =new JLabel("Label 40"); 
    JLabel label55 =new JLabel("Label 50"); 
    JLabel label65 =new JLabel("Label 60"); 
    jp.add(label05); 
    jp.add(label15); 
    jp.add(label25); 
    jp.add(label35); 
    jp.add(label45); 
    jp.add(label55); 
    jp.add(label65); 

    //Row 6Labels 
    JLabel label06 =new JLabel("Label 00"); 
    JLabel label16 =new JLabel("Label 10"); 
    JLabel label26 =new JLabel("Label 20"); 
    JLabel label36 =new JLabel("Label 30"); 
    JLabel label46 =new JLabel("Label 40"); 
    JLabel label56 =new JLabel("Label 50"); 
    JLabel label66 =new JLabel("Label 60"); 
    jp.add(label06); 
    jp.add(label16); 
    jp.add(label26); 
    jp.add(label36); 
    jp.add(label46); 
    jp.add(label56); 
    jp.add(label66); 



    jf.add(jp); 
} 



/** 
* Main method of GUI 
*/ 
public static void main(String[] args) 
{ 
    GUI gui = new GUI(); 
} 
} 
+2

把'jf.setVisible(true); ** **添加完所有組件後,就可以解決問題了。 –

+3

你也可以添加jf.revalidate( )和jf.repaint()之後,但是,調用setVisible(true)結束可能是這種特定情況的最佳選擇 – MKreegs

回答

2

由於LuxxMiner建議,移動jf.setVisible(true);到的結束public GUI()構造函數。這個修復了我的問題。

+1

謝謝!!!工作<3 –