2016-09-13 3 views
-1
MyFrame(){ 
    String titel = "Rezept"; 
    JLabel label = new JLabel(titel); 
    JButton abutton = new JButton("Abbrechen"); 
    JButton sbutton = new JButton("Speichern"); 

    JPanel jp1 = new JPanel(); 
    jp1.setLayout(new FlowLayout(FlowLayout.CENTER)); 
    jp1.add(label); 

    JPanel jp2 = new JPanel(); 
    jp2.setLayout(new GridLayout(1,2)); 
    jp2.add(abutton); 
    jp2.add(sbutton); 

    setLayout(new BorderLayout()); 
    setSize(300,500); 
    setDefaultCloseOperation(EXIT_ON_CLOSE); 
    setVisible(true); 
    add(jp1, BorderLayout.NORTH); 
    add(jp2, BorderLayout.SOUTH); 
} 

    public static void main(String[]args){ 
     new MyFrame(); 
    } 

Я просто не понимаю. Когда я запускаю этот графический интерфейс, он ничего не распечатывает.Мой GUI ничего не печатает

Я получаю пустой кадр. Что я здесь делаю неправильно?

(код находится в «MyFrame расширяет JFrame» класс)

+0

Обычно вы добавляете материал в область [content pane] (https://docs.oracle.com/javase/7/docs/api/javax/swing/JFrame.html#getContentPane%28%29) кадра. – khelwood

+0

Не могли бы вы разместить компилятивный пример вместо фрагментов? – khelwood

+0

Вы пытались использовать метод repaint или revalidate? – nowszy94

ответ

1

вы никогда не увидите ничего, если вы вызываете метод setVisible(true); перед добавлением JPanels ...

изменить порядок, чтобы что-то вроде:

add(jp1, BorderLayout.NORTH); 
add(jp2, BorderLayout.SOUTH); 
setVisible(true); 

после этого вы должны увидеть что-то вроде

enter image description here

+1

Он полностью говорит 'setVisible (true)' в опубликованном коде. – khelwood

+0

Ох, я понял ... Я убираю ответ ,,, вам нужно закрепить порядок вызывающего метода ... набор вызовов видимый *** ПОСЛЕ *** вы добавляете все дочерние компоненты ... –