将Paint组件添加到JPanel

时间:2018-04-27 04:49:14

标签: java paint paintcomponent

在我的应用程序中(使用java),按下一个按钮,然后打开一个面板,上面有一个图形。要创建图形,我使用的是图形/绘画。但是,我无法显示图形。现在,我只想画一个圆圈(而不是实际的图形)。如果有人能解释我做错了什么,我将不胜感激。

public class SeeProgressHandleClass extends JPanel{

  public SeeProgressHandleClass(JFrame window) {
    this.window = window;
  }

  public void mouseClicked(MouseEvent e) {
    panel = new JPanel();

    fillPanel();

    window.add(panel);      
    panel.setBackground(Color.white);       
    panel.setBounds(50, 40, 1100, 660);
  }

  public static void fillPanel() {
    Graph graph = new Graph();
    panel.add(graph);
 }
}

public class Graph extends JPanel{

  public void paintComponent(Graphics g) {
    super.paintComponent(g);
    this.setBackground(Color.white);
    g.setColor(Color.green);
    g.fillOval(50, 50, 50, 50);
  }

}

1 个答案:

答案 0 :(得分:1)

  • Graph应提供preferredSize提示,这将允许布局管理员更好地确定组件应如何显示。考虑覆盖getPreferredSize
  • 不要在this.setBackground(Color.white);内调用paintComponent,每次执行此操作时,都会触发潜在的重新绘制请求,最终会占用所有CPU周期。在构造函数
  • 中设置它
  • 您正在将Graph添加到JPanel中,然后将其添加到屏幕上...不确定原因,但这会让它更加混乱
  • window.add(panel);之后,所有window.revalidate()window.repaint()都会触发新的布局和绘制传递