2016-04-28 8 views
0

Ich habe versucht, ein Textfeld und eine Schaltfläche und Beschriftung mit Swing in Java.Ich habe erfolgreich die Beschriftung und die Schaltfläche hinzugefügt, aber wenn ich versuche, das Textfeld hinzuzufügen, ist der Lochrahmen leer, Es taucht also nichts auf, nicht einmal der Knopf oder das Etikett. Was mache ich falsch?Mit JTextField wird alles andere verschwinden

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

public class SwingPartOne extends JFrame { 

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

public SwingPartOne(){ 
    this.setSize(800,800); 
    this.setLocationRelativeTo(null); 
    this.setVisible(true); 

    Toolkit tk = Toolkit.getDefaultToolkit(); 

    Dimension dim = tk.getScreenSize(); 

    int xPos = (dim.height/2) - (this.getHeight()/2); 
    int yPos = (dim.width/2) - (this.getWidth()/2); 

    this.setResizable(false); 

    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

    this.setTitle("First Jframe"); 


    JPanel thePanel = new JPanel(); 

    JLabel label1 = new JLabel("Some random text ."); 

    label1.setText("New text."); 

    label1.setToolTipText("Surprize!"); 

    JButton thebutton1 = new JButton("BOOM!"); 

    JTextField textField = new JTextField("Some text" , 15); 
    textField.setColumns(5); 
    textField.setSize(200,200); 
    textField.setText("Some random text"); 

    thePanel.add(label1); 
    thePanel.add(textField); 
    thePanel.add(thebutton1); 
    this.add(thePanel); 






} 
} 
+2

zu berechnen Rufen Sie 'this.setVisible (true)' am Ende des Konstruktors auf, damit es 'validieren' kann. Auch einige andere Anmerkungen: 1) 'textField.setSize (200,200);' wird nicht viel tun, überschreiben es 'getPreferredSize' Methode stattdessen (nur wenn Sie wirklich müssen). 2) Um den Rahmen zu zentrieren, können Sie einfach 'setLocationRelativeTo (null)' aufrufen. Es gibt keine Notwendigkeit, 'xPos' und' yPos' zu berechnen –

+0

danke, dass es gelöst hat. – JohnnyOnPc

+0

[Vorsicht] (http://stackoverflow.com/a/12532237/230513) 'setResizable (false)'. – trashgod

Antwort

1

beschloß ich, das Problem durch this.setVisible(true) am Ende mit Hilfe LuxxMiner`s setzen.

> Rufen Sie am Ende des Konstruktors this.setVisible (true) auf, damit es validiert werden kann. Auch einige andere Anmerkungen: 1) textField.setSize (200,200); wird nicht viel tun, überschreiben es ist getPreferredSize Methode (nur wenn Sie wirklich brauchen). 2) Um den Rahmen zu zentrieren, können Sie auch einfach setLocationRelativeTo (null) aufrufen. Es gibt keine Notwendigkeit, xPos und yPose