2012-01-13 13 views
0

JFrameクラスを拡張するクラス(Display.java)を作成してJFrameを作成しました。そのクラスでは、私はJPanelオブジェクトを作成しました。JButtonディスプレイの問題

class Display extends JFrame { 
     JPanel jp= new JPanel(); 

そして、下図のように別のクラス(TestBroadCastNode.java)で、私はクラスDisplayへの参照を使用して、そのJPanelJButton Sを追加してい:

class TestBroadCastNode { 

    Display disp; 
    Graphics g =disp.getGraphics(); 
    JButton bt = new JButton("One"); 
    disp.jp.add(bt); 
} 

は今、私はボタンを表示することはできませんよ。助けてください....もし私があなたに完全なファイルを送ることができます。

+0

すべてのコードを見ずには分かりません。 1つの可能性は、DisplayクラスのJFrameにJPanelを追加しないことです。そうであれば、新しいJPanel(new BorderLayout())に変更してパネルにレイアウトを設定し、ボタンを追加するときはjp.add(bt、BorderLayout.CENTER)を使用してください。それらのどちらも役立たない場合は、より多くのコードを投稿することができます。 –

答えて

1

あなたのコードを可能な限り近づけようとしましたが、限られたスニペットしか与えなかったので、私はいくつかの仮定をしなければなりませんでした。しかし、次のコードではボタンがうまく表示されています:

import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 
import javax.swing.SwingUtilities; 

public class TestClass { 

    public static class Display extends JFrame { 
    public JPanel panel = new JPanel(); 

    public Display(){ 
     super("TestFrame"); 
     getContentPane().add(panel); 
    } 
    } 

    public static class TestBroadCastNode{ 
    Display display; 

    public TestBroadCastNode(Display aDisplay) { 
     display = aDisplay; 
     display.panel.add(new JButton("One")); 
    } 
    } 

    public static void main(String[] args) throws Exception { 
    SwingUtilities.invokeLater(new Runnable() { 

     public void run() { 
     Display display = new Display(); 
     display.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

     new TestBroadCastNode(display); 

     display.pack(); 
     display.setVisible(true); 
     } 
    }); 
    } 
}