public class fs extends JFrame {
目前成都创新互联已为1000多家的企业提供了网站建设、域名、雅安服务器托管、网站托管运营、企业网站设计、随州网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
public static void main(String args[]) {
Demo myDemo=new Demo();
}
}
fs类为啥也继承JFrame类, Demo类继承JFrame类了,Demo就是一个JFrame了,赶脚怪怪的。
这个方法需要注意的地方不多,也就是重写时,先调用 super.paint(g) 方法
paint方法不需要编写代码调用,只需要重写。
其他看jdk帮助中就行了。
public void paint(Graphics g) {
super.paint(g);// 调用父类的paint方法或调用下面的方法直接绘制组件
g.drawImage(image, 0, 0, null);
g.setFont(new Font("", Font.BOLD, 13));
g.setColor(Color.WHITE);
}
paint
public void paint(Graphics g)绘制容器。该方法将 paint 转发给任意一个此容器子组件的轻量级组件。如果重新实现此方法,那么应该调用 super.paint(g) 方法,从而可以正确地呈现轻量级组件。如果通过 g 中的当前剪切设置完全剪切某个子组件,则不会将 paint() 转发给这个子组件。
覆盖:
类 Component 中的 paint
参数:
g - 指定的 Graphics 窗口
另请参见:
Component.update(Graphics)
我随手写了一个,你自己看看,注释我就不写了
import java.awt.Color;
import java.awt.Graphics;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class TestDraw implements ActionListener {
private JButton b1,b2,b3;
JFrame frame;
MyPanel panel;
public void init() {
frame = new JFrame();
frame.setBounds(100, 100, 400, 300);
frame.setTitle("画");
frame.setLayout(new GridLayout(2, 1));
JPanel p1 = new JPanel();
b1 = new JButton("直线");
b2 = new JButton("矩形");
b3 = new JButton("椭圆");
b1.addActionListener(this);
b2.addActionListener(this);
b3.addActionListener(this);
p1.add(b1);
p1.add(b2);
p1.add(b3);
panel = new MyPanel();
frame.add(p1);
frame.add(panel);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void actionPerformed(ActionEvent e) {
if(e.getSource() == b1) {
panel.setFlag(0);
panel.repaint();
}else if(e.getSource() == b2) {
panel.setFlag(1);
panel.repaint();
}else if(e.getSource() == b3) {
panel.setFlag(2);
panel.repaint();
}
}
public static void main(String[] args) {
new TestDraw().init();
}
class MyPanel extends JPanel {
int flag = -1;
public MyPanel() {
this.setSize(400, 400);
this.setBackground(Color.white);
this.setVisible(true);
}
//画直线
public void drawL(Graphics g) {
g.drawLine(100, 20, 200, 20);
}
//画矩形
public void drawR(Graphics g) {
g.drawRect(100, 20, 200, 100);
}
//画椭圆
public void drawO(Graphics g) {
g.drawOval(100, 20, 200, 100);
}
@Override
public void paint(Graphics g) {
super.paint(g);
if(flag == 0) {
drawL(g);
}else if(flag == 1) {
drawR(g);
}else if(flag == 2) {
drawO(g);
}
}
public int getFlag() {
return flag;
}
public void setFlag(int flag) {
this.flag = flag;
}
}
}
JFreeChart是JAVA平台上的一个开放的图表绘制类库。它完全使用JAVA语言编写,是为applications, applets, servlets 以及JSP等使用所设计。JFreeChart可生成饼图(pie charts)、柱状图(bar charts)、散点图(scatter plots)、时序图(time series)、甘特图(Gantt charts)等等多种图表,并且可以产生PNG和JPEG格式的输出,还可以与PDF和EXCEL关联。