用MousAdapter处理鼠标事件!!!!!!!

hanglong1013 2010-04-02 03:41:45
用MousAdapter处理鼠标事件时,假如一个Buttton添加了一个鼠标事件监听器 moseClicked(),当点击Button时,会创建一个窗口Frame!

问题:当我双击时怎么会跳出两个窗口出来,但是我想的时不管怎么点击Button时,只会出来一个Frame,请高手指教一下!!!
...全文
164 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
sirtener 2010-04-06
  • 打赏
  • 举报
回复
不要每次都new个实例,操作原有的实例,用单例模式来做吧
py330316117 2010-04-06
  • 打赏
  • 举报
回复
设个标志不就完了,count计数为一时就不再创建frame(可以用if语句进行判断)
swing_false 2010-04-06
  • 打赏
  • 举报
回复
定义一个Boolean值 初始为TRUE 在每次new frame之前首先判断下如果是FALSE就不new了 第一次new的时候将值设为FALSE 我想这样应该可以了
kai27ks 2010-04-06
  • 打赏
  • 举报
回复
你不要在鼠标单击事件里面去new,把窗体对象做成一个类局部变量,一开始就new,然后去判断他的visalbe。和楼上的思路一样的
woshayawo 2010-04-05
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 qybao 的回复:]
引用 3 楼 hanglong1013 的回复:
我的意思时不管是单击还时双击,只弹出一个Frame出来!

你应该只有一个instance,而不是每次都new一个
然后在Button事件只是把该instance显示setVisiable(true)
[/Quote]


这个思路太棒了!!
qybao 2010-04-05
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 hanglong1013 的回复:]
我的意思时不管是单击还时双击,只弹出一个Frame出来!
[/Quote]
你应该只有一个instance,而不是每次都new一个
然后在Button事件只是把该instance显示setVisiable(true)
coffee8888888888 2010-04-05
  • 打赏
  • 举报
回复
package com.shan.test;

import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JButton;
import javax.swing.JFrame;

public class ButtonTest extends JFrame {
JFrame frame = new JFrame();

ButtonTest() {
JButton button = new JButton("弹出对话框");
button.addMouseListener(new MouseAdapter() {

@Override
public void mouseClicked(MouseEvent e) {
if (!frame.isVisible()) {
frame.setSize(800,600);
frame.setVisible(true);
}
}

});
this.getContentPane().add(button);
}

public static void main(String[] args) {
ButtonTest test=new ButtonTest();
test.setSize(300,400);
test.setVisible(true);
}
}
canoe982 2010-04-02
  • 打赏
  • 举报
回复
使用singleton设计模式吧。
hanglong1013 2010-04-02
  • 打赏
  • 举报
回复
我的意思时不管是单击还时双击,只弹出一个Frame出来!
diggywang 2010-04-02
  • 打赏
  • 举报
回复
[Quote=引用楼主 hanglong1013 的回复:]
我想的时不管怎么点击Button时,只会出来一个Frame,请高手指教一下!!!
[/Quote]
你这个要求太诡异了。楼上说的“e.getClickCount()==1”也不行,楼主的“不管怎么点击”是什么意思?我点一下,隔10秒钟后再点一下?

给个我理解的demo:

import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingUtilities;

public class OnlyOneFrame extends JFrame {

private JFrame f = null;

public OnlyOneFrame() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JButton button = new JButton("Click me");
button.setToolTipText("this will show only one frame");
setTitle("OnlyOneFrame Test");
getContentPane().add(button);

setLocation(300, 200);
// button.addActionListener(new ActionListener() {
//
// @Override
// public void actionPerformed(ActionEvent e) {
// showOnlyOneFrame();
// }
// });
button.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
showOnlyOneFrame();
}
});
pack();
}

private void showOnlyOneFrame() {
if(f==null){
f = new JFrame();
f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
f.setTitle("OnlyOneFrame");
JLabel label = new JLabel("Hello Boy!");
f.getContentPane().add(label);
f.pack();
f.setLocation(200, 200);
}
f.setVisible(true);
}

public static void main(String[] hello) {
SwingUtilities.invokeLater(new Runnable() {

@Override
public void run() {
new OnlyOneFrame().setVisible(true);
}
});
}

}
ZRBRZB 2010-04-02
  • 打赏
  • 举报
回复
e.getClickCount()==1

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧