Java鼠标双击事件
想用鼠标双击事件,实现双击panel上的图片之后窗体的最大化,publicvoidmouseClicked(MouseEvente){if(e.getClickCount...
想用鼠标双击事件,实现双击panel上的图片之后窗体的最大化,
public void mouseClicked(MouseEvent e) {
if(e.getClickCount() == 2){
this.setExtendedState(JFrame.MAXIMIZED_BOTH);}
else{
this.setExtendedState(JFrame.NORMAL);}}
可是这段写完之后,出现了一个BUG,在双击放大之后如果移动窗体,就回不到初始窗体大小了(我认为是移动窗体之后,系统更新记录了放大的窗体),还有clickcount我理解是鼠标单击的次数,在第二次时最大化,但是不是我想要的结果,我觉得应该用doubleclick来写,哪位大神能帮我修改一下?初学Java,很少用百度提问= =、没分了。。。 展开
public void mouseClicked(MouseEvent e) {
if(e.getClickCount() == 2){
this.setExtendedState(JFrame.MAXIMIZED_BOTH);}
else{
this.setExtendedState(JFrame.NORMAL);}}
可是这段写完之后,出现了一个BUG,在双击放大之后如果移动窗体,就回不到初始窗体大小了(我认为是移动窗体之后,系统更新记录了放大的窗体),还有clickcount我理解是鼠标单击的次数,在第二次时最大化,但是不是我想要的结果,我觉得应该用doubleclick来写,哪位大神能帮我修改一下?初学Java,很少用百度提问= =、没分了。。。 展开
2个回答
展开全部
是你的判断有问题吧,没判断当前窗体是否是最大化,不知道理解的对不对。
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
public class MouseDemo extends JFrame {
private static final long serialVersionUID = 1L;
boolean IS_MAXIMIZED = false;
public MouseDemo() {
super("DoubleClick Demo");
this.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() == 2) {
if (IS_MAXIMIZED) {
setExtendedState(JFrame.NORMAL);
IS_MAXIMIZED = false;
} else {
setExtendedState(JFrame.MAXIMIZED_BOTH);
IS_MAXIMIZED = true;
}
}
}
});
this.setSize(new Dimension(200, 150));
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String args[]) {
new MouseDemo().setVisible(true);
}
}
追问
知道什么意思了,对了,你知不知道如何获取窗体初始大小?应该用什么方法?我放大之后就回不去了
追答
初始大小不是你自己设置的么?比如这样:
this.setSize(new Dimension(200, 150));
展开全部
既然你感觉更新了,就在更改之前,把数据记录下来不就行了。然后按照你记录的数据还原窗口。
追问
我主要还是想问,怎么用doubleclick来写双击事件,因为clickcount到头来还是单击事件
追答
首先判断getSource然后判断getCount==2
我知道你说的意思就是存在2此点击时间间距长的话,会给人感觉有时候点1下也能进去。
这就要你自己加个时间判断了。
可以用两次点击鼠标键的时间间隔来判定是否在指定的范围内.其实原理就是这样.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询