Ich habe ein ernstes Problem. Wenn ich versuche, 2 JRadioButtons und ein JLabel auf meinem JFrame hinzuzufügen, funktioniert es nicht. Sie zeigen nicht, aber andere Elemente tun es.Einige Swing-Komponenten werden nicht auf JFrame angezeigt
Das lustige ist, dass andere Komponenten, die ich zuvor hinzugefügt habe (auch JLabels) auf dem JFrame sichtbar sind.
Alle Swing-Komponenten werden über einen Container 'panel' hinzugefügt, der den Inhaltsbereich des JFrame darstellt.
Ich benutze Java DK 7 u67.
Hier ist der Code: (nach unten scrollen zu /* Dieser Code funktioniert nicht */)
public class UDP_FileTransfer implements KeyListener, Runnable {
JFrame fenster;
Container panel;
JButton startBt, setPathBt;
JTextField portFeld, ipFeld, savePathFeld;
JLabel infoLbl, serverLbl, clientLbl;
JRadioButton server, client;
boolean typeIsServer = true;
int port = 4444;
long size = 0;
boolean serverStarted;
public static void main(String[] args){
new UDP_FileTransfer();
}
public UDP_FileTransfer(){
fenster = new JFrame();
fenster.setLayout(null);
fenster.addKeyListener(this);
fenster.setTitle("UDP File Transfer - Server");
fenster.setLocationRelativeTo(null);
fenster.setResizable(false);
fenster.setSize(400,150);
panel = fenster.getContentPane();
panel.setLayout(null);
panel.addKeyListener(this);
JLabel portLbl = new JLabel("Port: ");
portLbl.setBounds(10,10, 50,20);
panel.add(portLbl);
...
...
...
infoLbl = new JLabel("Status: Starten Sie den Server zuerst!");
infoLbl.setBounds(10, 70, 371,20);
infoLbl.setBorder(new LineBorder(Color.black, 1));
panel.add(infoLbl);
/* This code doesn't work */
JLabel typeLbl = new JLabel("Wählen Sie den Typ aus:");
typeLbl.setBounds(10,125,200,20);
panel.add(typeLbl);
client = new JRadioButton("Client");
client.setBounds(230,125,70,20);
panel.add(client);
client = new JRadioButton("Server");
client.setBounds(320,125,70,20);
panel.add(client);
/* End of non-working code */
fenster.setVisible(true);
fenster.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
Die GUI wie folgt aussieht: Click me
Die JRadioButtons Client & Server und die JLabel typeLbl sollte unter dem Rahmen mit der Grenze erscheinen.
Ich hoffe einer von euch kann mir helfen ...
nicht Grenzen Ihrer Komponenten eingestellt. Das ist die Rolle des Layout-Managers. Verwenden Sie einen Layout-Manager. –
'fenster.setLayout (null);' 1) Java GUIs müssen auf verschiedenen Betriebssystemen, Bildschirmgrößen, Bildschirmauflösungen usw. mit verschiedenen PLAFs in verschiedenen Locales arbeiten. Als solche sind sie nicht für ein perfektes Pixel-Layout geeignet. Verwenden Sie stattdessen Layout-Manager oder [Kombinationen davon] (http://stackoverflow.com/a/5630271/418556) zusammen mit Layout-Auffüllung und Rahmen für [Leerraum] (http://stackoverflow.com/a/17874718/ 418556). 2) Bereitstellung von ASCII-Grafiken oder einer einfachen Zeichnung des * beabsichtigten * Layouts der GUI bei minimaler Größe und wenn sie in der Größe veränderbar ist, mit mehr Breite und Höhe. –