JComboBox展开的情况下其它组件无法获得鼠标点击事件,触发的鼠标的事件会被用来处理JComboBox弹出部分的隐藏

wara笑 2014-03-16 10:29:14
百度谷歌翻了个遍都没找到相关的、、API用的1.6的UI类父类都找了遍还是没有任何线索,所以只好来求救了。

图1:当前为下拉框显示状态

例如:这时鼠标点击关闭窗口按钮达成的是JComboBox的弹出部分被隐藏而并未关闭窗口;而我想要达成的目的是既把JComboBox的弹出部分隐藏又把窗口给关闭,但是却怎么也找不到方法。。不知道我表达的清不清楚,总之求教了。。拱手
...全文
126 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
wara笑 2014-03-17
  • 打赏
  • 举报
回复
、、额,不是时候?等中午再来了、、
wara笑 2014-03-17
  • 打赏
  • 举报
回复
求解、、UP
wara笑 2014-03-17
  • 打赏
  • 举报
回复
package test;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Point;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.FocusAdapter;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;

import javax.swing.BorderFactory;
import javax.swing.DefaultCellEditor;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JPopupMenu;
import javax.swing.JTextField;
import javax.swing.UIManager;
import javax.swing.event.PopupMenuEvent;
import javax.swing.event.PopupMenuListener;
import javax.swing.plaf.basic.BasicArrowButton;
import javax.swing.plaf.basic.BasicComboBoxUI;
import javax.swing.plaf.basic.BasicTextFieldUI;

import com.qq.tools.Fonts;
import com.sun.awt.AWTUtilities;

public class A extends JFrame implements MouseListener, MouseMotionListener{
	/**
	 * 
	 */
	private static final long serialVersionUID = 1768745106281382962L;
	
	//显示界面背景、包含其他组件
	private JPanel centerPanel = null;
	//关闭与最小化按钮
	JButton closeButton = null;
	JButton minimizationbt = null;
	
	//头像
	ImageIcon headImage = null;
	JPanel forHead = null;
	
	//账号//密码
	Font fillfont = new Font("黑体", 1, 17);
	@SuppressWarnings("rawtypes")
	JComboBox filluser = null;
	JPasswordField fillcipher = null;
	//复选框
	JCheckBox remenmberPassWord = null;
	JCheckBox automaticLogin = null;
	//注册账号、找回密码
	JButton registration = null;
	JButton find = null;
	
	//登录按钮
	JButton loginButton = null;
	//拖动所需
	Point oldposition = null;
	//自定义的监听器
//	protected MouseAdapter mouseAdapter = new MouseAdapter(){
//		//实现窗口移动
//		@Override
//		public void mouseDragged(MouseEvent e) {
//			// TODO 自动生成的方法存根
//	        Point newposition = e.getPoint(); //转换坐标系统
//	        setLocation(getX()+(newposition.x-oldposition.x), getY()+(newposition.y-oldposition.y));
//		}
//		//点击窗口时获取坐标
//		@Override
//		public void mousePressed(MouseEvent e) {
//			// TODO 自动生成的方法存根
//			oldposition = e.getPoint(); 
//		}
//	};
	
	public static void main(String[] args){
		try {
			UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
		} catch (Exception e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		} 
		A login = new A();
		login.createUI();
		login.setVisible(true);
	}
	
	@SuppressWarnings("rawtypes")
	public void createUI(){
		
		this.setSize(386, 300);
		this.setResizable(false);
		this.setLocationRelativeTo(null);
		this.addMouseListener(this);
		this.addMouseMotionListener(this);
		//中部面板
		centerPanel = new JPanel();
		centerPanel.setOpaque(false);
		this.add(centerPanel, "North");
		
		this.add(new JPanel(), "Center");
		//账号
		filluser = new JComboBox();
		filluser.setEditable(true);
		this.add(filluser, "South");
	}

	@Override
	public void mouseDragged(MouseEvent e) {
		// TODO 自动生成的方法存根
        Point newposition = e.getPoint(); //转换坐标系统
        setLocation(getX()+(newposition.x-oldposition.x), getY()+(newposition.y-oldposition.y));
	}
	//点击窗口时获取坐标
	@Override
	public void mousePressed(MouseEvent e) {
		// TODO 自动生成的方法存根
		oldposition = e.getPoint(); 
	}

	
	
	@Override
	public void mouseMoved(MouseEvent e) {
		// TODO 自动生成的方法存根
		
	}

	@Override
	public void mouseClicked(MouseEvent e) {
		// TODO 自动生成的方法存根
		
	}

	@Override
	public void mouseReleased(MouseEvent e) {
		// TODO 自动生成的方法存根
		
	}

	@Override
	public void mouseEntered(MouseEvent e) {
		// TODO 自动生成的方法存根
		
	}

	@Override
	public void mouseExited(MouseEvent e) {
		// TODO 自动生成的方法存根
		
	}
}
//这是一段测试用的代码你们可以自己试试看、、

62,621

社区成员

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

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