Tag: jpanel mouseevent

有没有更好的方法来设置JPanel图形的初始位置?)

在Liang的Java编程简介(第7版)的第15章中,他介绍了一个在JPanel上制作(2-D)球的程序,并在点击放大/缩小按钮时将其放大。 我修改了程序,以便1)放大/缩小球,如果用户点击/选项+点击,2)允许你通过按下按钮选择球的颜色,3)允许你移动用鼠标拖动它。 最后一次修改是给我带来麻烦的一段时间,因为我想在开始时将球放在中心,但是然后允许用户用鼠标移动球。 我想出的解决方案是让paintComponent方法仅在第一次绘制时相对于getWidth()和getHeight()设置球的x坐标和y坐标。 为此,我向BallCanvas类添加了一个paintCount变量,并创建了一个if语句,以便它只在第一次执行时执行。 当我最初试图弄清楚如何做到这一点时,我看到了其他解决方案,比如这里给出的解决方案: 为什么我不能访问我的面板的getWidth()和getHeight()函数? ,但我发现我的解决方案更简单。 所以问题是:我认为编码风格是不是很糟糕? 专业程序员会嘲笑这个解决方案吗? 还是可以吗? 更重要的是,有没有更好(但也相对简单)的方法来做这个不涉及设置计数器? 以下是相关的代码: BallCanvas的开头: public static class BallCanvas extends JPanel { private int radius = 20; private Color color = Color.BLACK; private int ballX; private int ballY; private int paintCount = 0; … move方法(响应MouseDragged事件): public void move(MouseEvent e){ ballX = e.getX() – radius; ballY = […]

将一个jPanel上的click事件传递给另一个JPAnel

我有一个外面板,在外面板上我有另一个jPanel。 如果我右键单击内部面板,外部面板的右键单击操作应该会发生。 如果我左键单击内部面板,则应该发生其自己的内部面板的单击操作。 是否可以将点击事件从一个面板传递到另一个面板?