我在Java中的作业遇到了问题。我们必须扩展类JPanel
,然后以这样的方式扩展它,如果你点击面板上出现一个点,然后另一个点击连接两个点,第三个关闭一个三角形,另一个点击是全新的循环。这就是我的问题所在。编写代码很容易,每次点击都会连接到前一个点,但我不确定代码中是否嵌入了所有这些循环。
我对有关使用内容和如何继续的一些指导和/或提示感兴趣。
修改
Turtle mariska = new Turtle();`
protected void onMouseClicked(int x1, int x2, MouseEvent detail) {
this.add(mariska);
if (detail.isAltDown()) {
mariska.setFillColor(Color.blue);
} else {
if (detail.isShiftDown()) {
mariska.setFillColor(Color.green);
} else {
mariska.setFillColor(Color.red);
}
}
mariska.moveTo(x1, x2);
mariska.dot(5);
}
}
答案 0 :(得分:1)
我建议使用枚举来跟踪点击次数和相应的操作,但我认为你还没有了解它(如果有,你想看,留下评论)
鼠标单击时颜色之间有以下循环,并使用该颜色绘制正方形:
public class Cycler extends JPanel {
static int x;
static int y;
static int state = 0;
Cycler() {
setBackground(Color.WHITE);
addMouseListener(new MyMouseListener());
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
switch (state) {
case 0:
g.setColor(Color.RED);
break;
case 1:
g.setColor(Color.BLUE);
break;
case 2:
g.setColor(Color.GREEN);
break;
}
g.fillRect(x, y, 20, 20);
}
class MyMouseListener extends MouseAdapter {
@Override
public void mouseClicked(MouseEvent e) {
x = e.getX();
y = e.getY();
state = (state + 1) % 3;
repaint();
}
}
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setContentPane(new Cycler());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300, 300);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
}
在您的情况下,您需要更改dawing操作(点或线),而不是更改颜色。