2016-07-18 10 views
0

erscheinen, ich bin nur in immer GUIs in Java erstellen und mit dieser Grundeinstellung, ich kann nichts in meinem JFrame erscheinen erhalten:Java Swing-Layout nicht

public class Main extends JFrame { 

public static void main(String[] args) { 
    JFrame jframe = new JFrame(); 
    jframe.setSize(400,400); // setting size 
    jframe.setVisible(true); // Allow it to appear 
    jframe.setTitle("Lab 7"); 
    jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    Main init = new Main(); 
} 

public Main() { 
    Container pane = getContentPane(); 
    pane.setBackground(Color.BLUE); 
    pane.setLayout(new FlowLayout()); 
    JButton add = new JButton("Add"); 
    JButton close = new JButton("Close"); 
    JTextArea area = new JTextArea(); 
    JScrollPane scroll = new JScrollPane(area); 

    add.setBounds(70, 125, 80, 20); 
    close.setBounds(70, 115, 80, 20); 
    pane.add(add); 
    pane.add(close); 
    pane.add(scroll); 
    AddClick added = new AddClick(); 
    add.addActionListener(added); 
} 
} 

Ich habe auch versucht, alle beweglichen JFrame stuff in public Main(), aber es verursachte eine unendliche Anzahl von Fenstern und ich musste das Programm jedes Mal beenden.

Antwort

2

Sie erstellen zwei separate JFrame s: eine ist Ihre Main Klasse, und die andere ist eine nicht verwandte JFrame. Der Großteil der Anpassung, einschließlich des Hinzufügens von Komponenten, geschieht mit dem Main in seinem Konstruktor. Aber Sie setzen immer nur die anderen JFrame sichtbar.

Verwenden Sie Ihre Main-Instanz als JFrame statt eine andere zu erstellen, und das Problem wird behoben.

public static void main(String[] args) { 
    JFrame jframe = new Main(); //Use an instance of Main as your JFrame 
    jframe.setSize(400,400); // setting size 
    jframe.setVisible(true); // Allow it to appear 
    jframe.setTitle("Lab 7"); 
    jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
} 
+0

Dies funktionierte. Danke vielmals! – Awbelton