2017-03-17 1 views
0

Ich verstehe nicht, warum die panel.add(txtnum1) und panel.add(button2) nicht angezeigt wird, wenn ich das Programm kompiliere. Die panel.add(button) funktioniert gut, mein Compiler wirft keine Warnung oder Fehler, habe ich etwas verpasst?JPanel fügt keine Schaltfläche und Textfeld

package gui; 

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

public class GUI { 
public static void main(String[] args) { 
    JFrame frame = new JFrame(); 
    frame.setVisible(true); 
    frame.setSize(new Dimension(300, 500)); 
    frame.setLocationRelativeTo(null); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

    JPanel panel = new JPanel(); 
    panel.setBackground(Color.GRAY); 
    frame.getContentPane().add(panel); 
    JButton button = new JButton("Submit"); 
    panel.add(button); 

    JTextField txtnum1 = new JTextField(); 
    txtnum1.setPreferredSize(new Dimension(30, 50)); 
    panel.add(txtnum1); 

    JButton button2 = new JButton("Clear"); 
    panel.add(button2); 
} 

} 
+0

Die anderen Komponenten werden wahrscheinlich nicht sichtbar in das Bedienfeld eingefügt. Sie sollten steuern, wie die Komponenten angezeigt werden, indem Sie Layout-Manager verwenden, anstatt absolute Positionen und Größen festzulegen. – Titus

+0

'JTextField txtnum1 = neu JTextField(); txtnum1.setPreferredSize (neue Dimension (30, 50)); 'Die Größe eines Textfelds sollte mit' setColumns (int) 'für die Breite in Zeichen und' setFont (bigOrSmallFont) 'eingestellt werden, um die Höhe (und Breite) zu ändern). –

+0

* "Mein Compiler wirft keine Warnungen oder Fehler, habe ich etwas übersehen?" * Compiler nehmen nicht viele Dinge auf, die zur Laufzeit möglicherweise schief gehen. Überlassen Sie das Konzept, dass, wenn es OK kompiliert, der Code keine Fehler hat. –

Antwort

1

Wenn GUI-Anwendungen mit Swing-Implementierung, wie ich in dem Code, diesen Ansatz zu haben, die die Builds JFrame (wir eine einfache GUI übernehmen, die nicht JPanel Behälter in JPanel Containern und wie das Zeug haben):

  1. erstellen JFrame und initialisieren es
  2. erstellen JPanel
  3. GUI-Komponenten für diese Platte erstellen und fügen sie sie
  4. hinzufügen Tafel zur JFrame (Wiederholung von 2) für jeden JPanel innerhalb der JFrame)
  5. Machen Sie den JFrame auf dem Bildschirm sichtbar

Also, Ihr Code würde wie folgt aussehen:

package gui; 

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

public class GUI { 
public static void main(String[] args) { 
    /* step 1 */ 
    JFrame frame = new JFrame(); 
    frame.setSize(new Dimension(300, 500)); 
    frame.setLocationRelativeTo(null); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

    /* step 2 */ 
    JPanel panel = new JPanel(); 
    panel.setBackground(Color.GRAY); 

    /* step 3 */ 
    JButton button = new JButton("Submit"); 
    panel.add(button); 

    JTextField txtnum1 = new JTextField(); 
    txtnum1.setPreferredSize(new Dimension(30, 50)); 
    panel.add(txtnum1); 

    JButton button2 = new JButton("Clear"); 
    panel.add(button2); 

    /* step 4 */ 
    frame.getContentPane().add(panel); 
    /* step 5 */ 
    frame.setVisible(true); 
} 

} 

Getestet und es funktioniert in Eclipse.

0

Sie sollten setVisible (true) am Ende aufrufen, nachdem alle Komponenten hinzugefügt wurden.

Setzen Sie frame.setVisible(true); am Ende und es wird wie erwartet funktionieren.

Verwandte Themen