如何使 paintComponent 方法起作用?
How to make the paintComponent method work?
我现在正在学习 Head First Java 这本书。我遇到了一个示例,该示例显示了如何覆盖 paintComponent 以便在具有整个 JPanel 的宽度和高度的黑色矩形上绘制随机颜色圆圈。
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class MyDrawPanel extends JPanel {
public void paintComponent(Graphics g) {
g.fillRect(0, 0, this.getWidth(), this.getHeight());
int red = (int)(Math.random() * 255);
int green = (int)(Math.random() * 255);
int blue = (int)(Math.random() * 255);
Color randomColor = new Color(red, green, blue);
g.setColor(randomColor);
g.fillOval(70, 70, 100, 100);
}
}
import javax.swing.*;
import java.awt.event.*;
public class SimpleGui3 {
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300, 300);
frame.setVisible(true);
}
}
但是我没有达到预期的效果:面板上没有画任何东西。
我做错了什么?如何实现?
您需要在 main 方法中添加两个才能使其工作。您必须实例化 MyDrawPanel() class,然后将其添加到框架中。
MyDrawPanel p = new MyDrawPanel();
和
frame.add(p);
所以主要方法应该是:
public static void main(String[] args) {
JFrame frame = new JFrame();
MyDrawPanel p = new MyDrawPanel();
frame.add(p);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300, 300);
frame.setVisible(true);
}
我现在正在学习 Head First Java 这本书。我遇到了一个示例,该示例显示了如何覆盖 paintComponent 以便在具有整个 JPanel 的宽度和高度的黑色矩形上绘制随机颜色圆圈。
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class MyDrawPanel extends JPanel {
public void paintComponent(Graphics g) {
g.fillRect(0, 0, this.getWidth(), this.getHeight());
int red = (int)(Math.random() * 255);
int green = (int)(Math.random() * 255);
int blue = (int)(Math.random() * 255);
Color randomColor = new Color(red, green, blue);
g.setColor(randomColor);
g.fillOval(70, 70, 100, 100);
}
}
import javax.swing.*;
import java.awt.event.*;
public class SimpleGui3 {
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300, 300);
frame.setVisible(true);
}
}
但是我没有达到预期的效果:面板上没有画任何东西。
我做错了什么?如何实现?
您需要在 main 方法中添加两个才能使其工作。您必须实例化 MyDrawPanel() class,然后将其添加到框架中。
MyDrawPanel p = new MyDrawPanel();
和
frame.add(p);
所以主要方法应该是:
public static void main(String[] args) {
JFrame frame = new JFrame();
MyDrawPanel p = new MyDrawPanel();
frame.add(p);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300, 300);
frame.setVisible(true);
}