- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的程序中有一个组合框,其中包含三个选项“圆形”、“矩形”、“徒手画”。每个选项都连接到一个鼠标监听器。如果我在三个选项之间切换,鼠标监听器会给我带来一些问题。因此,我只想添加一次鼠标监听器(例如在构造函数中或在方法的开头或其他地方)。这是否可能,代码会是什么样子?如果不行的话还有其他办法可以解决吗?
public void actionPerformed(ActionEvent e) {
if (e.getSource().equals(comboBox)) {
JComboBox cb = (JComboBox)e.getSource();
if (cb.getSelectedItem().equals("Rectangle")) {
contentPane.addMouseListener(new MouseAdapter() { //First mouseListener
@Override
public void mousePressed(MouseEvent e) {
startX = e.getX();
startY = e.getY();
}
@Override
public void mouseReleased(MouseEvent e) {
endX = e.getX();
endY = e.getY();
int width = startX - endX;
int height = startY - endY;
w = Math.abs(width);
h = Math.abs(height);
Rectangle r = new Rectangle(startX, startY, w, h, pickedColor, thickness);
shapeList.add(r);
repaint();
}
});
}
else if (cb.getSelectedItem().equals("Circle")) {
contentPane.addMouseListener(new MouseAdapter() { //Second
@Override
public void mousePressed(MouseEvent e) {
startX = e.getX();
startY = e.getY();
}
@Override
public void mouseReleased(MouseEvent e) {
endX = e.getX();
endY = e.getY();
int width = startX - endX;
int height = startY - endY;
w = Math.abs(width);
h = Math.abs(height);
Circle c = new Circle(startX, startY, w, h, pickedColor, thickness);
shapeList.add(c);
repaint();
}
});
}
else if (cb.getSelectedItem().equals("Freehand")) {
contentPane.addMouseListener(new MouseAdapter() { //Third
@Override
public void mousePressed(MouseEvent e) {
startX = e.getX();
startY = e.getY();
}
@Override
public void mouseDragged(MouseEvent e) {
FreeHand fh = new FreeHand(startX, startY, e.getX(), e.getY(), pickedColor, thickness);
shapeList.add(fh);
repaint();
}
});
}
}
最佳答案
您应该在构造函数中向面板添加一个鼠标监听器,而不是每次在组合框中进行选择时向面板添加不同的监听器。并且此监听器在调用其方法之一时,应首先检查选择了哪个选项,并采取相应的操作(即绘制矩形或圆形,或根据选择徒手绘制)。
关于Java只addMouseListener一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26684750/
我在调用两个鼠标事件(一个进入另一个)时遇到问题。我想当用户单击第一帧 (frame1) 中的组件 (component1) 时显示第二帧 (frame2),然后如果单击 component2,则返回
这是我的按钮代码 onclick 我希望我的程序等待用户单击一个 JPanel,并且当用户单击 JPanel 时,它应该在控制台上打印其名称。 此按钮代码未显示输出 JPopupMenu popu
我在 DefaultTableCellRenderer 中使用 MouseListner。 标签应该得到这个============================> public class Cat
当我编译以下代码时出现错误: The method addMouseListener(Player) is undefined for the type Player 代码: import java.
我尝试向我的 JMenuItems 添加一个 Action 监听器以进行右键单击。我看到很多例子,他们使用 item.addActionListener(this) 向 JMenuItem 添加监听器
我目前在这里为我的鼠标 listener 使用此代码: public void mousePressed(MouseEvent e) { JLabel labelReference=(JLab
我目前正在编写一个程序,该程序在 for 循环内创建并排列在网格中的 28 个标签,我想为每个标签添加一个 mouseListener。我可以向每个标签添加一个 mouseListener,但是当我尝
今天有个问题..我的程序制作了一个 8x8 网格并在我单击 JButton 时显示坐标。 但我拒绝使用 JButton,我需要使用 JPanel.. 但是我的 addMouseListener 不工作
我的问题是,当我创建一个继承自 JPanel 的类时,为什么不使用 super.addMouseListener() 来添加监听器?我认为这个方法位于父类(super class) JPanel 中。
最近,我一直在学习Java,并且不断遇到以下错误:this method (*) is undefined for the type(*)。我过去通过导入缺少的库解决了这个问题,但在下面的代码中,即使
以下是使用 Oracle 网站上的 mouseEvent 的示例: 我不希望任何人阅读整个代码。我只对下面代码的特定行感兴趣: addMouseListener(this);//为什么允许“this”
这是我的 RocketShip 的面板,我想向其中添加我的 MouseListener 和 MouseMotionListener,但它告诉我“this”是一个无效名称。我的教科书有时会使用这个,教授
假设您想使用“关闭应用程序”菜单项关闭您的 Java 应用程序。 3 种可能的解决方案是(使用 ActionListener 或 MouseAdapter 或 MouseListener): menu
我有 3 个 JLable,并且我向 l3 添加了单击时的功能,将 JLabel 文本设置为值存储到数组中 (ans.get(0,0)) JLabel l1 = new JLabel("Obtener
这个问题已经有答案了: JList selected item to String - Weird result: Donnees.Marques@3d5bac58 (4 个回答) 已关闭 8 年前。
我的代码dispatchEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING))不起作用: jTable1.addMouseListener(n
我将自定义面板添加到 JScrollPane 上。我还有另一套“工具”,可以将其附加到我的自定义面板上。问题是,在这些工具中,它调用 attached.addMouseListener(this)。通
我有以下代码来跟踪用户在表中选择的内容,在用户选择聊天对话后,我想隐藏包含该表的 JPanel 并显示 JPanel 包含聊天对话。请参阅我当前执行此操作的代码: table.addMo
我想从 com.jogamp.newt.event.MouseListener 添加一个 MouseListener像这样的 GLAutoDrawable: /* inside the class t
在定义 JButton 上的简单单击行为时,哪种方法是正确的?而且,有什么区别? JButton but = new JButton(); but.addActionListener(new Acti
我是一名优秀的程序员,十分优秀!