按钮流动排列:
frame.setLayout=new FlowLayout();
添加图形按钮到窗体:运用数组
String[] shape={"自定义图形","随意三角形","直角三角形","等腰三角形","绿色"};
for(int i=0;i<shape.length;i++){
JButton shapebutton=new JButton();
shapebutton.setText(shape[i]);
shapebutton.addActionListener(DrawL);
frame.add(shapebutton);}
在监听器中(Released下)
if("等腰三角形".equals(action)){
g.drawLine(x1, y1, x2, y2);
g.drawLine(x1, y1,2*x1-x2 , y2);
g.drawLine(2*x1-x2, y2, x2, y2);
}
若想点三个点,然后自动画出三角形:(前面已将i设为3)
public void mouseClicked(MouseEvent e){
if("随意三角形".equals(action)){
if(i==3){
x3=e.getX();
y3=e.getY();
i++;
}
else if(i==4){ ......要写else,否则点击一次三个if都执行了
x4=e.getX();
y4=e.getY();
i++;
}
else if(i==5){
x5=e.getX();
y5=e.getY();
g.drawLine(x3, y3, x4, y4);
g.drawLine(x3, y3, x5, y5);
g.drawLine(x4, y4, x5, y5);
i=3; .........最后将i又变成初值,不然循环只能执行一次画出一个三角形
}
}
因为添加了按钮,有动作事件:
事件名:public class DrawListener implements MouseListener,ActionListener
public void actionPerformed(ActionEvent e){
action=e.getActionCommand(); ...........getActionCommand()获取一个字符串,如果事件源没有设置ActionCommand,获取出来的就是按钮上的文字,否则就是设置 System.out.print("action:"+action); 的ActionCommand。
}