更新时间:2023-12-05 22:32:40
您所有的JPanel变量都引用普通的JPanels,而不是覆盖的类.
All your JPanel variables refer to plain vanilla JPanels, not to the overridden classes.
因此请考虑更改此内容:
so consider changing this:
private JPanel panel1;
private JPanel panel2;
private JPanel panel3;
public Demo(String string) {
// ...
JPanel topPanel = new JPanel();
topPanel.setLayout( new BorderLayout() );
getContentPane().add( topPanel );
// Create the panels
new MyJPanel1();
new MyJPanel2();
new MyJPanel3();
// ...
}
private class MyJPanel1 extends JPanel{
public MyJPanel1(){
panel1 = new JPanel();
panel1.setLayout( new BorderLayout() );
panel1.setPreferredSize(new Dimension(200,500));
}
@Override
public void paintComponent(Graphics g) {
//super.paintComponent(g);
g.drawString("BLAH1", 20, 20);
g.drawRect(200, 200, 200, 200);
//setVisible(true);
}
}
//.... etc
对此:
private JPanel panel1;
private JPanel panel2;
private JPanel panel3;
public Demo(String string) {
// ...
JPanel topPanel = new JPanel();
topPanel.setLayout( new BorderLayout() );
getContentPane().add( topPanel );
// Create the panels
panel1 = new MyJPanel1();
panel2 = new MyJPanel2();
panel3 = new MyJPanel3();
// ...
}
private class MyJPanel1 extends JPanel{
public MyJPanel1(){
// panel1 = new JPanel();
setLayout( new BorderLayout() );
setPreferredSize(new Dimension(200,500));
}
@Override
public void paintComponent(Graphics g) {
//super.paintComponent(g);
g.drawString("BLAH1", 20, 20);
g.drawRect(200, 200, 200, 200);
//setVisible(true);
}
}
//.... do the same with the other JPanel classes