📄 rose1.java
字号:
//本程序演示:
//声明的类 Rose1是组件类Componentd 的子类,可以重写 paint(Graphics g) 方法。
//在选择事件类接口itemStateChanged(ItemEvent e)方法中,使用三种方法来判断选中的是哪个按钮。
import java.awt.*;
import java.awt.event.*;
public class Rose1 extends Frame
implements WindowListener,ComponentListener,ItemListener
//声明的类 Rose1是组件类Componentd 的子类。实现:改变窗口大小事件接口、组件事件接口、选择事件接口。
{
int width1=600,height1=400; //窗口尺寸。
Color color = Color.blue; //创建颜色,画线的默认颜色。
CheckboxGroup cg1 ;//(单选按钮的)复选框组。
Checkbox cb1,cb2,cb3;//三个单选按钮(选择颜色)。
public Rose1()//构造方法,供77行初始化使用。
{
setTitle("四页玫瑰线");//窗口标题。
setSize(width1,height1);//窗口大小。
setBackground(Color.white);//窗口背景色。
setLayout(new FlowLayout());//Panel(面板)类的默认布局(按行排放,132页8行)。
addWindowListener(this);//为窗口事件(关闭窗口时)注册监听程序,与56行关联。(关闭窗口时触发,见129页5行。)
addComponentListener(this);//为组件事件注册监听程序(改变窗口大小时,见128页倒数4行)。与60行关联。。
cg1 = new CheckboxGroup();//复选框组件实例化。
cb1 = new Checkbox("blue",cg1,true);//单选按钮实例化,默认为兰色。
cb2 = new Checkbox("red",cg1,false);//cg1:复选框组件名不能少。
cb3 = new Checkbox("green",cg1,false);//cg1:复选框组件名不能少。
cb1.addItemListener(this);//为选择事件(三个单选按钮)注册监听程序。
cb2.addItemListener(this);//this ,在本类中出发。
cb3.addItemListener(this);
add(cb1);//将三个单选按钮添加到框架中。
add(cb2);
add(cb3);
}
public void paint(Graphics g) //开始画图。
{ //Graphics g :创建对象g,以对象作参数。
int x0,y0; //原点坐标。
x0 = width1 /2;//宽度减半。
y0 = height1 /2;
g.setColor(color);//设置图形颜色为兰色(Color:见11行)。
g.drawLine(x0,0,x0,height1);//画十字竖线。
g.drawLine(0,y0,width1,y0);//画十字横线。
int i,j=40,x,y;
double pi=3.14,angle,r;//定义角度、半径。
while (j<200) //画图;j,图形外形。可改变值300、
{
for (i=0;i<1023;i++)
{
angle = i*pi/512;//定义角度。
r = j*Math.sin(2*angle);//半径。
x =(int) Math.round(r*Math.cos(angle)*2);//数学类转换函数。角度余弦。
y =(int) Math.round(r*Math.sin(angle));//数学类转换函数。角度正弦。
g.fillOval(x0+x,y0+y,1,1); //每循环一次,画椭圆一个点。。
}
j = j + 20;
}
}
public void windowClosing(WindowEvent e)//关闭窗口时触发,见129页5行。
{
System.exit(0);//关闭窗口。
}
public void componentResized(ComponentEvent e) //改变组件(窗口)大小时(见128页倒数4行)。与21行关联。
{
width1 = getWidth(); //图形扩大(点击窗口最大化时使用)。
height1 = getHeight();
}
public void itemStateChanged(ItemEvent e)
{ //单击单选按钮时。
if (e.getSource()==cb1) //判断产生事件对象e的组件是哪一个。
color = Color.blue;
if (cb2.getState()) //判断单选按钮cb2的状态
color = Color.red;
if (cg1.getSelectedCheckbox()==cb3) //判断复选框组cg1选中的是谁
color = Color.green;
repaint(); //根据所选颜色重新画图,如无此行,选择颜色时就不画图了。。
}
public static void main(String arg[])
{ //创建并显示Frame对象,Frame作为画布
new Rose1().setVisible(true);//创建对象,调用14行初始化。
}
public void componentMoved(ComponentEvent e) { }//必须写上接口中剩余的空方法。
public void componentHidden(ComponentEvent e) { }
public void componentShown(ComponentEvent e) { }
public void windowOpened(WindowEvent e) { }
public void windowActivated(WindowEvent e) { }
public void windowDeactivated(WindowEvent e) { }
public void windowClosed(WindowEvent e) { }
public void windowIconified(WindowEvent e) { }
public void windowDeiconified(WindowEvent e) { }
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -