Java 错误的鼠标器开火
我用Java编写了一个程序,可以在其中绘制椭圆和矩形,然后将它们分组,以便在它们上进行大小调整和移动操作 我将Java 错误的鼠标器开火,java,swing,components,jpanel,mouselistener,Java,Swing,Components,Jpanel,Mouselistener,我用Java编写了一个程序,可以在其中绘制椭圆和矩形,然后将它们分组,以便在它们上进行大小调整和移动操作 我将MouseListeners添加到DrawPanel(JPanel)中,作为所有创建的形状(该DrawPanel上的组件)。但当我将几个形状组合在一起后,似乎鼠标侦听器被向后推,链接到大型机的鼠标侦听器被触发 我对JPanel上的calls.GetCompontent()函数做了一个变通。但是肯定有可能推进组件鼠标侦听器 JPanel及其组件都使用相同的MouseListener pub
MouseListener
s添加到DrawPanel(JPanel)
中,作为所有创建的形状(该DrawPanel上的组件)。但当我将几个形状组合在一起后,似乎鼠标侦听器
被向后推,链接到大型机
的鼠标侦听器
被触发
我对JPanel
上的calls.GetCompontent()函数做了一个变通。但是肯定有可能推进组件鼠标侦听器
JPanel及其组件都使用相同的MouseListener
public class MainFrame extends JFrame implements ActionListener,MouseInputListener {
public MainFrame() {
super("Tekenprogramma");
//some other stuf
drawPanel.addMouseListener(this);
drawPanel.addMouseMotionListener(this);
}
在同一类中创建和添加形状时:
public void mousePressed(MouseEvent e) {
if(e.getSource() == drawPanel) {
Point pos = e.getPoint();
switch(mode) {
//Some other cases...
case RECTANGLE:
shape = new Rectangle(pos);
shape.addMouseListener(this);
shape.addMouseMotionListener(this);
storeAndExecute(new RectangleCommand(drawPanel,shape));
最初,形状确实会对自己的侦听器做出反应。但是,当我移除并读取它们(嵌套在没有MouseStener
(组)的组件中)后,它们停止触发,绘图面板的MouseStener
接管了它。可能重复Swing设计原则,即只有一个组件接收事件。您遇到的是传播优先级问题。