Hat jemand von euch eine Idee, warum meine JMenuBar menuBar
nicht angezeigt wird? Ich verwende eine JFrame
und eine JPanel
.JMenuBar wird nicht angezeigt
Meine Klasse erweitert JPanel
und hat eine paint
Methode geerbt (bereits mit super.paint(g)
).
Ich möchte JMenuBar
einige JLabels
und JTextFields
auf meinem anzuzeigen (ich weiß, das ist nicht der Zweck davon)
Hier ist mein Code:
public void createMenuBar(){
menuBar = new JMenuBar();
menuBar.setBounds(0,0,1463,29);
menuBar.setLayout(null);
this.add(menuBar);
ipLbl = new JLabel("IP-Adresse:");
ipLbl.setBounds(5,2,150,25);
ipLbl.setLabelFor(ip);
menuBar.add(ipLbl);
ip = new JTextField();
ip.setBounds(150,2,100,25);
menuBar.add(ip);
}
Ich rufe diese Methode nach dem JFrame Erstellen , aber direkt bevor Sie setVisible(true)
tun.
Look:
public IceHockey(){
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception e){}
fenster = new JFrame("IceHockey");
fenster.setSize(1479, 941);
fenster.setLayout(null);
fenster.addKeyListener(this);
fenster.addMouseListener(this);
fenster.setResizable(false);
fenster.setLocationRelativeTo(null);
fenster.setContentPane(this);
this.addKeyListener(this);
this.addMouseListener(this);
createMenuBar();
fenster.setVisible(true);
fenster.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
** Don‘ t verwende ein Null-Layout !!! **. Dies wurde bereits in einer Ihrer früheren Postings vorgeschlagen: http://stackoverflow.com/questions/36751366/some-swing-components-not-showing-on-jframe. Achten Sie auf Vorschläge. Wir geben ihnen einen Grund. Lesen Sie das Swing-Tutorial unter [Verwendung von Menüs] (http://docs.oracle.com/javase/tutorial/uiswing/components/menu.html) für ein funktionierendes Beispiel. Der Code zeigt Ihnen auch, wie Sie Ihre Klasse besser strukturieren können. – camickr
camickr Ich weiß, aber dieses Programm ist nur für mich und sogar mein Lehrer in der Schule sagte uns, dass wir Null-Layouts verwenden können. Es liegt also an mir, was ich benutze! Außerdem ist das Null-Layout so einfach zu benutzen! –
'Außerdem ist das Null-Layout so einfach zu benutzen! '- Nein, ist es nicht. Sie haben absolut keine Ahnung, wie groß eine Komponente sein sollte, um richtig angezeigt zu werden. Hardcoding-Zufallszahlen sind Zeitverschwendung und werden nur in der Zukunft Probleme verursachen, insbesondere wenn Änderungen vorgenommen werden müssen. Einfache Dinge wie das Ändern einer Schriftart verursachen Probleme. Nur weil du etwas tun kannst, heißt das nicht, dass du es tun solltest. Lernen Sie Swing richtig zu benutzen! Du hast die Swing-Grundlagen noch nicht einmal gelernt (oder du würdest diese Frage nicht stellen), also hast du keine Ahnung, was einfach ist oder nicht. Das kommt nur aus Erfahrung. – camickr