2016-08-30 14 views
-2

スコアを表示するゲームの上にラベルを貼ろうとしていますが、ラベルを空白の灰色の画面に表示してゲームが表示されません。コードとJLabelを挿入しようとしている領域を添付します。あなたが同じフレームに両方の要素を追加しているので、あなたはレイアウトになっているはずですJava Swing。

public static void main(String[] args) throws InterruptedException { 
    int timer = 0; 
    int Time = 0; 
    JFrame frame = new JFrame("Grid Hopper"); 
    frame.setSize(1120,800); 
    frame.setResizable(false); 
    frame.setVisible(true); 
    frame.setTitle("Grid Hopper"); 
    frame.setLocationRelativeTo(null); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    GridHopper game = new GridHopper(); 
    game.setBackground(Color.gray); 
    frame.add(game); 

    JLabel score = new JLabel(); 
    score.setText("Score to be calculated"); 
    frame.add(score); 


    //ACTUAL GAME-RUN WHILE LOOP! 
    while(game.dead != true){ 
     game.repaint(); 
     //game.moveBall(); NOW USED FOR PLAYER MOVEMENT 

    if (Time > 3){ 
      game.moveBall5(); 
    } 

     if (Time > 10){ 
      game.moveBall4(); 
     } 

     if (Time > 30){ 
     game.moveBall2(); 
    } 

     if (Time > 60){ 
     game.moveBall3(); 
    } 

     game.collision(); 
    Thread.sleep(2); 
    timer++; 
    if (timer%500 == 0){ 
     Time++; 
    System.out.println(Time); 
    } 


    } 
    } 
+0

'frame.add(game、BorderLayout.CENTER);と' frame.add(score、BorderLayout.NORTH); 'を試してみて、' frame.setVisible(true); 'レイアウトが行われます。 – Berger

+0

それは感謝しました! – Cutter

+0

JFrameで使用されるデフォルトのレイアウトマネージャー(内容ペインでも)はBorderLayoutで、私の答えを説明しています。レイアウトマネージャの仕組みを確認できます:https://docs.oracle.com/javase/tutorial/uiswing/layout/visual.html – Berger

答えて

4

(私は、コードが不完全に書かれている知っているが、私はまだ任意のヒントやトリックが良いでしょう。学んだ)、それであってもよいです。その後、パネルとにフレームにパネルの要素を追加することを検討してください:

JFrame frame = new JFrame("Grid Hopper"); 
frame.setSize(1120,800); 
frame.setLayout(new FlowLayout()); 
JPanel pane = new JPanel(); 
pane.add(game); 
pane.add(score); 
frame.add(pane); 

here

+1

*「パネルに要素を追加してからパネルをフレーム: "素晴らしい提案、私は完全に同意する。 –

4

をやり直すより完全な説明をtheresのを、そして

  1. メインのうち、そのコードの大部分を取得しますメソッドとインスタンスメソッドへ
  2. whileループループではなく、スイングタイマーを使用してください。
  3. Swingについて学び、使用してくださいあなたの利点にレイアウト。たとえば、JFramesがBorderLayoutを使用し、JLabelをBorderLayout.PAGE_START位置に追加すると、JFramesが上に座ることがわかります。例:frame.add(score, BorderLayout.PAGE_START);
  4. サイズを設定せず、代わりにレイアウトマネージャーと推奨サイズで作業します。
  5. 最も重要なこと - GUIを作成する前に、クリーンなオブジェクト指向プログラミングを学ぶことを含め、第一の原則から始めます。これは将来の多くの悲しみを救うでしょう。