题目
设计一个画板,可以通过点击按钮按实现一些操作
效果
本次我们将要实现一个绘图板的形状选择,在我们自己的界面里面我们采用流式布局,
代码讲解
如何设置这些按钮呢?我们可以采用这些方法
drawframe.setLayout(new FlowLayout());
//创建监听器对象
DrawListener draw = new DrawListener();
String[] shapeArr={"直线","三角形","圆","椭圆","矩形"};
for(String text : shapeArr) {
JButton btn =new JButton(text);
drawframe.add(btn);
btn.addActionListener(draw);
}
drawframe.addMouseListener(draw);
for循环采用这样写,非常简洁,建议采纳。每遍历一次就将这个按钮添加到动作监听器中。
那么监听器我们应该如何实现呢?
public class DrawListener implements MouseListener,ActionListener{
Graphics g;
Shape p;
List<Shape> list=new ArrayList<>();
String shapetype="";
public void setGraphics(Graphics g){
this.g=g;
}
//记录坐标使用的数字
int startx,starty,endx,endy;
public void mousePressed(MouseEvent e) {
//记录坐标
startx = e.getX();
starty = e.getY();
}
public void mouseReleased(MouseEvent e) {
//记录坐标
endx = e.getX();
endy = e.getY();
//画线
//
}
public void actionPerformed(ActionEvent e){
shapetype=e.getActionCommand();
if("直线".equals(shapetype)){
g.setColor(Color.red);
g.drawLine(startx, starty, endx, endy);
p=new Shape(startx, starty, endx, endy, "直线", Color.red);
list.add(p);
}
}
public void mouseClicked(MouseEvent e) {}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
}
首先我们重写动作事件和鼠标事件,注意一定到把不重写的方法放入这个类中。
然后再鼠标事件中调用getActionCommand(),再 用这个来记录位置,画出这条直线。同样的我们可以实现其他功能。