我正在尝试改变鼠标按钮,将地图视图从右键平移到左键。
在单击鼠标左键后,有一个简单的代码来更改按钮:
public class Map extends JMapViewer {
public Map() {
new DefaultMapController(this){
public void mousePressed(MouseEvent e) {
this.setMovementMouseButton(MouseEvent.BUTTON1);
}
};
}
}
public class JMapViewerDemo {
public static void main(String[] args) {
JFrame f = new JFrame();
f.add(new Map());
f.setSize(800, 600);
f.setVisible(true);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
public void mousePressed(MouseEvent e) {
super.mousePressed(e); //Calling the parent-class method
this.setMovementMouseButton(MouseEvent.BUTTON1);
}
如何直接改变平移按钮,而不被释放和再次点击?谢谢你的帮助...
所看到的结果并不出乎意料,但可能有点违背直觉:您的示例更改了mousepress()
实现中DefaultMapController
的内部状态。相反,保存对自定义控制器的引用,以便您可以根据需要更改首选按钮:
JMapViewer map = new JMapViewer();
DefaultMapController dmc = new DefaultMapController(map){…};
dmc.setMovementMouseButton(MouseEvent.BUTTON1);
在桌面应用程序中,可以让用户使用单选按钮选择首选的鼠标按钮,并将选定的值保存在用户的首选项
中,如下所示。还可以考虑重写getPreferredSize()
,而不是调用setSize()
。
通常,具有固定参数数的方法优于具有可变参数数的重载方法。但是,该示例的行为不同: 输出: main的第三行用一个参数调用该方法,该参数是一个包含两个元素的字符串[]。但这并不是用一个参数执行方法,而是执行varargs方法,就像我给了它两个参数一样(这有点正常,因为它是一个数组)。 现在的问题是:这应该发生吗?我是否发现了错误或未记录的行为?它这样做的原因是什么? 我为什么这么做:我想做一个快捷方
我有以下代码来解析一个JSON文件: 要处理以下JSON文件: 如果我执行此代码,我将收到以下错误: 所以我开始一步一步地调试应用程序,看看part processing()中的哪个代码部分抛出了这个异常。令人惊讶的是,那里的所有代码都正常执行:没有抛出异常,也没有返回结果I except。 更让我惊讶的是,当我稍微改变第一种方法的代码时,它可以在不产生异常的情况下工作。 我不知道println方
问题内容: 考虑以下代码: 现在,更改方法的可见性,我得到: (for ,for ) (看起来像)。 我期望所有东西都像声明时一样。但是,尽管和本质上是同一件事,但根据in 和的可见性,它们会产生不同的结果。为什么会这样? 问题答案: 继承/覆盖私有方法 在PHP中,子类中的方法(包括私有方法)为: 复制;保留原始功能的范围。 已替换(如果需要,则为“覆盖”)。 您可以使用以下代码查看此内容: 现
问题内容: 我在GregorianCalendar类中遇到一个奇怪的行为,我想知道我是否真的做得不好。 仅当初始化日期的月份的实际Maximum大于我将日历设置为的月份时,才追加此值。 这是示例代码: 我知道问题是由于日历初始化日期是31天(可能是5月),与设置为2月(28天)的月份混淆了。修复很容易(只需在设置年和月之前将day_of_month设置为1),但是我想知道这确实是想要的行为。有什么
问题内容: 我正在为一个问题而苦苦挣扎,我不明白为什么它不起作用。如何通过将变量传递并转换为? 为什么在顶部代码段中不起作用,但在行下方的底部代码段中起作用? 唯一的区别似乎是添加了一个额外的变量,该变量也被键入为? 问题答案: 该是一种原始类型,同时是一个普通的Java类。您不能在原始类型上调用方法。但是该方法在上可用,如javadoc中所示 有关这些原始类型的更多信息,请参见此处
问题内容: 为什么的到哪里去了? 问题答案: 删除任何字符,并从字符串的开头和结尾。