首页 > 解决方案 > 将 Paint 组件添加到 JPanel

问题描述

在我的应用程序(使用 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);
  }

}

标签: javapaintpaintcomponent

解决方案


  • Graph应该提供preferredSize提示,这将允许布局管理器更好地确定组件的显示方式。考虑覆盖getPreferredSize
  • 不要调用this.setBackground(Color.white);inside paintComponent,每次你这样做时,都会触发一个潜在的重绘请求,最终会消耗你所有的 CPU 周期。在构造函数中设置这个
  • 您正在添加,然后将其添加GraphJPanel屏幕......不知道为什么,但这让它变得更加混乱
  • After window.add(panel);, all window.revalidate()andwindow.repaint()触发新的布局和绘制通道

推荐阅读