package p;
import java.awt.*;
import java.awt.image.*;
import javax.swing.*;
public class Homework1MulitiCricle extends JPanel {
private static final String Graphics = null;
//private BufferedImage bi = new BufferedImage(320, 240,
// BufferedImage.TYPE_INT_BGR);
public Homework1MulitiCricle() {
// TODO Auto-generated constructor stub
setPreferredSize(new Dimension(500, 500));
System.out.println("这是第3个输出");
}
public void paintComponent(Graphics g) {
System.out.println("这是第4个输出");
int radius = 50;
g.setColor(Color.red);
for (int i = 1; i <= 8; i++) {
g.drawOval(200 - (radius + 15 * i), 200 - (radius + 15 * i),
(radius + 15 * i) * 2, (radius + 15 * i) * 2);
}
}
public void abc()
{
System.out.println("你好");
}
public static void main(String[] args) {
JFrame frame = new JFrame("MultiCircle");
System.out.println("这是第一个输出");
frame.add(new Homework1MulitiCricle());
System.out.println("这是第2个输出");
frame.pack();
System.out.println("这是第5个输出");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
System.out.println("这是第6个输出");
frame.setVisible(true);
System.out.println("这是第7个输出");
}
}
1、JPanel 是 Java图形用户界面(GUI)工具包swing中的面板容器类,包含在javax.swing 包中,是一种轻量级容器,可以加入到JFrame窗体中。JPanel默认的布局管理器是FlowLayout,其自身可以嵌套组合,在不同子容器中可包含其他组件(component),如JButton、JTextArea、JTextField 等,功能是对窗体上的这些控件进行组合,相当于C++和C#中的Panel类。
2、设置容器大小.
Dimension 类将组件的宽度和高度封装在一个单个对象中.它与组件的一些特性相关.一些由 Component 类和 LayoutManager 接口定义的方法返回 Dimension 对象.
width 和 height 的值通常是非负整数.允许创建一个 dimension 的构造子并不禁止用户为这些特性设置负值.若 width 或 height 的值为负数,则由其它对象定义的一些方法的行为是未定义的.
3、对于drawOval(int x,int y,int width,int height);来说,假想有个矩形刚好把圆包住,那么矩形的左上角坐标就是(x,y),矩形的右下角的坐标就是(x+width,y+height),圆心坐标是(x+width/2,y+height/2)
4、Pack()方法的作用:调整此窗口的大小,以适合其子组件的首选大小和布局。如果该窗口和/或其所有者还不可显示,则在计算首选大小之前都将变得可显示。在计算首选大小之后,将会验证该窗口。
5、类有一个方法paintComponent(Graphics g),当主方法并没有调用这个类的方法,而这个方法里的代码仍被执行。什么时候paintComponent(Graphics g)被调用?
当java认为需要重新绘制组件的时候由java调用。例如在程序中repaint();或者程序窗口最小化,然后恢复;或者程序窗口被遮挡,又显现的时候。
paintComponent就是本身这个容器自己画出自己组件的方法,且在JComponent中的方法paintComponent()还是保护类型的,即我们平常并不用管这个方法。只在我们需要改变绘制组件动作的时候,类只要先继承paintComponent(一般是JFrame),然后重写这个方法即可。