0

私のプロジェクトにはいくつかのクラスがあります。JFrameを除いて、GUIを作成するための1つのクラス。Mainクラスに次のようなJFrameを作成します。

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

public class KodeHusker {

public static void main(String[] args) {
    javax.swing.SwingUtilities.invokeLater(new Runnable(){
        @Override
        public void run(){
            JFrame f = new JFrame();
            f.setLayout(new FlowLayout());
            f.add(new JLabel("test"));
            f.add(new GUI().viewProgram());//it works fine, when i remove this
            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            f.pack();
            f.setLocationRelativeTo(null);
            f.setVisible(true);
        }
    });
}
}

guiクラスは、すべてのguiを作成する場所であり、viewProgramメソッドは次のように宣言されています。

public JPanel viewProgram(){}

JPanelを返します。

コードのコメントにあるように、その行を削除するとすべて正常に機能しますが、削除すると、例外はありませんが、JFrameが表示されることはありません。プログラムを閉じるためのショートカットも機能しません。

私が間違っていることを知っている人はいますか?アドバイスありがとうございます。

4

1 に答える 1

0

これがjPanelの外観ですが、よくわかりません(コードが表示されますか?)

import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JPanel;

public class JPanelExt extends JPanel  implements Runnable {
private int xCoor = 50;
private boolean moving = false;

 public JPanelExt() {       
      //Thread 
          thread = new Thread (this);       //
          thread.start();   }   

  public void paintComponent (Graphics g)
     {  
            super.paintComponent(g);
    g.drawString("DVC 10.0",xCoor,30);  
            g.drawRect(50, 50, 200,100);    
            g.drawOval(50,50,200,100);  
}   
    @Override
public void run() {
while (true)
        {   
    if (moving==true)
                   {    
          this.xCoor = this.xCoor+10;
        if (xCoor > this.getWidth())
                             {  
            xCoor = 0;      
                       }
            this.repaint(); 
               }        
        try {
            Thread.sleep(50);
        }
                catch (InterruptedException e) {    
        e.printStackTrace();            
                    }   
   }    
   public void setMoving(boolean moving) 
       {    
            this.moving = moving;   
        }
}
于 2012-08-26T18:27:04.060 に答える