Добавление компонента краски в JPanel - PullRequest
0 голосов
/ 27 апреля 2018

В моем приложении (использующем 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 голосов
/ 27 апреля 2018
  • Graph должен содержать preferredSize подсказок, которые позволят менеджеру компоновки лучше определять, как должен отображаться компонент. Рассмотрим переопределение getPreferredSize
  • Не вызывайте this.setBackground(Color.white); внутри paintComponent, каждый раз, когда вы делаете это, он запускает потенциальный запрос на перерисовку, который в конечном итоге потребляет все ваши циклы ЦП. Установите это в конструкторе
  • Вы добавляете Graph в JPanel, а затем добавляете это на экран ... не знаю почему, но это делает его более запутанным
  • После window.add(panel);, все window.revalidate() и window.repaint() для запуска нового макета и прохождения краски
...