当我运行这个程序时,我看到的只是一个空白的JFrame。我不知道为什么paintComponent方法不起作用。这里是我的代码:为什么我不能绘制到我的JPanel?
package com.drawing;
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class MyPaint extends JPanel {
private void go() {
JFrame frame = new JFrame();
JPanel panel = new JPanel();
frame.setSize(400, 400);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);
frame.add(panel);
frame.setVisible(true);
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.YELLOW);
g.fillRect(50, 50, 100, 100);
}
public static void main(String[] args) {
My paintTester = new MyPaint();
paintTester.go();
}
}
使用'this',而不是''中去(panel')' – chaosmasttter
另外,为什么没有JFrame的方法和JPanel有两个不同的类? –
只是一个建议,而不是在'JFrame'上设置大小,如果您重写[__getPreferredSize()__](http://docs.oracle.com/javase/7/docs/api/javax/swing /JComponent.html#getPreferredSize()),就像重写'paintComponent()'方法并调用'frame.pack()' –