ich einige Probleme mit den folgenden Klassen: Mein Problem ist, dass der JPanel nicht auf dem JFrame gerendert wird:JPanel ist nicht showen
MainFrame.class
import javax.swing.JFrame;
import javax.swing.JPanel;
public class MainFrame extends JFrame {
JPanel panel;
public MainFrame() {
setTitle("TestFrame");
setLayout(null);
setSize(800, 450);
setLocation(400, 225);
setDefaultCloseOperation(EXIT_ON_CLOSE);
panel = new TestPanel();
getContentPane().add(panel);
panel.setLocation(0, 0);
panel.setSize(64, 64);
panel.setVisible(true);
setLocationRelativeTo(null);
setVisible(true);
}
public void start() {
while(true) {
panel.repaint();
try {
Thread.sleep(20);
} catch(InterruptedException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
MainFrame frame = new MainFrame();
frame.start();
System.exit(-1);
}
}
TestPanel.class
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JPanel;
public class TestPanel extends JPanel {
public TestPanel() {
}
@Override
public void paintComponents(Graphics g) {
super.paintComponent(g);
g.setColor(Color.BLUE);
g.drawString("Test", 0, 0);
}
}
Irgendwelche Ideen, die mit diesem Code falsch sind? Ps. Ich bin Deutscher - Entschuldigung für mein Englisch!
Zuerst fügen wir das Panel wie folgt hinzu: getContentPane(). add (panel); können Sie es einfach mit der .add() -Methode hinzufügen. Zweitens, mit dem Intellij Debugger können Sie sehen, dass die Startmethode nicht richtig funktioniert. Warum haben Sie eine Startmethode, die alle 20 Sekunden ein neues Panel anzeigt? – Aris