java在JFrame上画东西,主要是使用paint方法,代码如下:
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Draw extends JFrame{
JPanel jPanel=new JPanel();
public Draw() {
jPanel.setBackground(Color.red);
add(jPanel);
Drawation drawaction=new Drawation();//添加画图,把上面jpanel的设置给覆盖了;要是先添加画图再添加
add(drawaction); //jpanel则把画图覆盖了
}
public static void main(String[] args){
Draw draw=new Draw();
draw.setTitle("abc");
draw.setSize(300,300);
draw.setVisible(true);
draw.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
class Drawation extends JPanel{
public void paintComponent(Graphics g){
super.paintComponents(g);
g.drawString("agagh", 50, 45);
}
}
运行结果如下:
直接重写JFrame的paint()方法不知道可不可以,一般是JFrame里放一个JPanel,然后重写JPanel的paint()方法。
JPanel加背景的话先用ImageIO类把图片读到BufferedImage里,然后用paint方法中的Graphics类画出来。
画东西的话也是用paint方法中的Graphics类,我觉得最好再写一个继承自JPanel的MyPanel,这个类需要有一些字段记录画过的东西,然后再在paint方法中画出来。
这只是如果让我去做这个东西的一点想法,欢迎讨论 :)
//重写paint 方法
public void paint(Graphics g){
//
g.drawImage(img,0,0); //画图片
g.drawRect(0,0,100,100); //画矩形
}