2012-01-13 5 views
0

Я создал JFrame, создав класс (Display.java), который расширяет класс JFrame. В этом классе я создал объект JPanel.JButton display issue

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

И в другом классе (TestBroadCastNode.java) Я добавляю JButton с до этого JPanel с помощью ссылки на класс Display, как показано ниже:

class TestBroadCastNode { 

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

Сейчас я не в состоянии отобразить кнопки. Помогите мне .... Если хотите, я могу отправить вам полный файл.

+0

Трудно сказать, не видя весь код. Одна из возможностей заключается в том, что вы не добавляете JPanel в JFrame в классе Display. Если да, попробуйте установить макет на панели, изменив его на новый JPanel (новый 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); 
     } 
    }); 
    } 
}