paintComponent 没有擦除 JPanel
paintComponent is not erasing JPanel
该程序是在JPanel 上显示3 个按钮。程序编译成功。 GUI Window 然后出现并且是空的。当我最小化 window 然后再次最大化它时,按钮出现了。再次执行此操作时,会出现另一组按钮。当 window 刷新并且旧数据保持不变时,该按钮继续出现。
J面板Class
class MyJPanel extends JPanel {
JButton jb1, jb2, jb3;
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.WHITE);
g.fillRect(0, 0, this.getWidth(), this.getHeight());
jb1 = new JButton();
jb2 = new JButton("Green");
jb3 = new JButton("Blue");
//g.drawString("Welcome!", 100, 100);
ImageIcon img = new ImageIcon("next.png");
jb1.setIcon(img);
jb1.setToolTipText("Button 1");
this.add(jb1);
this.add(jb2);
this.add(jb3);
}
}
JFrame Class
class MyJFrame extends JFrame {
MyJPanel mjp;
public MyJFrame(String title) {
super(title);
mjp = new MyJPanel();
Container ct = getContentPane();
ct.add(mjp);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
Driver Class
class Gui5JButton {
public static void main(String[] args) {
MyJFrame mjf = new MyJFrame("Prakhar");
mjf.repaint();
}
}
paintComponent
每次您的面板需要重绘时都会被调用,因此每次您最小化 window 时它都会再次放置该按钮。如果我理解您想正确执行的操作,则需要删除覆盖并输入此代码:
jb1 = new JButton();
jb2 = new JButton("Green");
jb3 = new JButton("Blue");
//g.drawString("Welcome!", 100, 100);
ImageIcon img = new ImageIcon("next.png");
jb1.setIcon(img);
jb1.setToolTipText("Button 1");
this.add(jb1);
this.add(jb2);
this.add(jb3);
在 MyJPanel 的构造函数中 class。
该程序是在JPanel 上显示3 个按钮。程序编译成功。 GUI Window 然后出现并且是空的。当我最小化 window 然后再次最大化它时,按钮出现了。再次执行此操作时,会出现另一组按钮。当 window 刷新并且旧数据保持不变时,该按钮继续出现。
J面板Class
class MyJPanel extends JPanel {
JButton jb1, jb2, jb3;
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.WHITE);
g.fillRect(0, 0, this.getWidth(), this.getHeight());
jb1 = new JButton();
jb2 = new JButton("Green");
jb3 = new JButton("Blue");
//g.drawString("Welcome!", 100, 100);
ImageIcon img = new ImageIcon("next.png");
jb1.setIcon(img);
jb1.setToolTipText("Button 1");
this.add(jb1);
this.add(jb2);
this.add(jb3);
}
}
JFrame Class
class MyJFrame extends JFrame {
MyJPanel mjp;
public MyJFrame(String title) {
super(title);
mjp = new MyJPanel();
Container ct = getContentPane();
ct.add(mjp);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
Driver Class
class Gui5JButton {
public static void main(String[] args) {
MyJFrame mjf = new MyJFrame("Prakhar");
mjf.repaint();
}
}
paintComponent
每次您的面板需要重绘时都会被调用,因此每次您最小化 window 时它都会再次放置该按钮。如果我理解您想正确执行的操作,则需要删除覆盖并输入此代码:
jb1 = new JButton();
jb2 = new JButton("Green");
jb3 = new JButton("Blue");
//g.drawString("Welcome!", 100, 100);
ImageIcon img = new ImageIcon("next.png");
jb1.setIcon(img);
jb1.setToolTipText("Button 1");
this.add(jb1);
this.add(jb2);
this.add(jb3);
在 MyJPanel 的构造函数中 class。