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();
}
}
把'jf.setVisible(true); ** **添加完所有組件後,就可以解決問題了。 –
你也可以添加jf.revalidate( )和jf.repaint()之後,但是,調用setVisible(true)結束可能是這種特定情況的最佳選擇 – MKreegs