我正在尝试更直接地绘制JPanel,因此代码如下:
import java.awt.*;
import javax.swing.*;
import java.awt.geom.*;
public class px{
JFrame F=new JFrame();
JPanel P=new JPanel();
public px(){
P.setPreferredSize(new Dimension(400,300));
F.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
F.add(P);
F.pack();
F.setResizable(false);
F.setVisible(true);
}
public void sq(int x,int y,int c){
Graphics2D G=(Graphics2D)P.getGraphics();
G.setPaint(Color.red);
G.fill(new Rectangle(x*10,y*10,10,10));
P.paint(P.getGraphics());
F.revalidate();
}
public static void main (String[]args){
px X=new px();
X.sq(1,1,0);
}
}
然而这个该死的小红色广场只出现过一次,可能是运行时错误或编译错误。
答案 0 :(得分:2)
覆盖自定义绘图的paintComponent()
JPanel
方法,您可以将Graphics
对象作为方法参数。
请勿忘记以重写super.paintComponent()
方式致电paintComponent()
。
在自定义绘画的情况下,覆盖getPreferredSize()
以设置JPanel
的首选大小。
有关详细信息,请阅读Lesson: Performing Custom Painting并尝试示例代码。
注意:遵循Java命名约定。
示例代码:
class MyPanel extends JPanel {
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
...
// custom painting code goes here
}
@Override
public Dimension getPreferredSize() {
return new Dimension(..., ...);
}
}