`
jswing
  • 浏览: 10865 次
社区版块
存档分类
最新评论

swing实现鼠标框选

 
阅读更多

记录鼠标按下位置和拖动位置,然后画矩形框,很简单的逻辑,不解释了,直接上代码

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class RectPanel extends JPanel implements MouseListener,
		MouseMotionListener {
	Point pStart = null;
	Point pEnd = null;
JToggleButton btn=new JToggleButton("button");
	public RectPanel() {
		this.addMouseListener(this);
		this.addMouseMotionListener(this);
		btn.setLocation(20, 20);
		this.add(btn);
	}

	@Override
	public void paintComponent(Graphics g) {
		super.paintComponent(g);
		Graphics2D g2d = (Graphics2D) g;
		if (pStart != null && pEnd != null) {
			g2d.setStroke(new BasicStroke(1, BasicStroke.CAP_BUTT,
					BasicStroke.JOIN_BEVEL, 0, new float[] { 5, 5 }, 0));

			int x = Math.min(pStart.x, pEnd.x);
			int y = Math.min(pStart.y, pEnd.y);
			int width= Math.abs(pStart.x - pEnd.x);
			int height=Math.abs(pStart.y - pEnd.y);
			g2d.drawRect(x, y,width,height);
			 g2d.setColor(new Color(125, 125, 125, 40));
			 g2d.fillRect(pEnd.x, pEnd.y, pStart.x - pEnd.x, pStart.y -
			 pEnd.y);
		}
	}

	public static void main(String[] args) {
		SwingUtilities.invokeLater(new Runnable() {
			@Override
			public void run() {
				JFrame frame = new JFrame();
				frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
				frame.setSize(400, 400);
				frame.setContentPane(new RectPanel());
				frame.setLocationRelativeTo(null);
				frame.setVisible(true);
			}
		});
	}

	@Override
	public void mouseClicked(MouseEvent e) {

	}

	@Override
	public void mousePressed(MouseEvent e) {
		pStart = e.getPoint();
		
	}

	@Override
	public void mouseReleased(MouseEvent e) {
		Rectangle r=new Rectangle(Math.min(pStart.x, pEnd.x),Math.min(pStart.y, pEnd.y), Math.abs(pStart.x - pEnd.x),
				Math.abs(pStart.y - pEnd.y));
		if(r.contains(btn.getBounds())){
			btn.setSelected(!btn.isSelected());
		}
		pStart = null;
		pEnd = null;
		repaint();
	}

	@Override
	public void mouseEntered(MouseEvent e) {
	}

	@Override
	public void mouseExited(MouseEvent e) {
	}

	@Override
	public void mouseDragged(MouseEvent e) {
		pEnd = e.getPoint();
		repaint();
	}

	@Override
	public void mouseMoved(MouseEvent e) {
	}
}
 
分享到:
评论

相关推荐

    java之swing实现复选框的方法

    在Java的Swing库中,实现复选框(Checkbox)是一种常见的创建图形用户界面(GUI)的方法。复选框允许用户在多个选项中选择一个或多个。本篇将详细讲解如何利用Java Swing来创建和管理复选框,并通过实例代码进行解析...

    Swing中依据鼠标拖拽来画出矩形的实现方法

    在 Swing 中,实现鼠标拖拽来画出矩形的功能需要使用 MouseListener 监听器和 Graphics 绘图类。 首先,需要创建一个继承自 JFrame 的类 Rect,用于创建一个窗口。在构造函数中,添加一个 Draw 面板并将其设置为...

    Jtable中加入复选框的两种方法

    然而,在JTable中加入复选框是一个常见的需求,但是却不是那么容易实现。本文将介绍JTable中加入复选框的两种方法,并对每种方法进行详细的解释。 方法一:使用CheckBoxRenderer类 第一种方法是使用...

    JFC Swing标准教材

    Swing包括一系列的组件,如按钮(JButton)、标签(JLabel)、文本框(JTextField)、文本区域(JTextArea)、复选框(JCheckBox)、单选按钮(JRadioButton)等。这些组件都继承自javax.swing.JComponent类,使得...

    Java SWING 的简单应用(收集)

    除了ActionListener,Swing还有许多其他类型的监听器,如ItemListener(用于复选框和单选按钮)、MouseListener(处理鼠标点击、拖动等事件)和KeyListener(处理键盘事件)。通过组合使用这些监听器,开发者可以...

    javaswing代码

    - **选中状态**:对于某些组件,如复选框或单选按钮,可以通过`setSelected(true)`方法使其处于选中状态。 - **查询选中状态**:通过调用`isSelected()`方法来查询当前是否被选中。 #### 5. 用户交互 - **焦点管理...

    swing example

    6. JRadioButton和JCheckBox:分别用于创建单选按钮和复选框,用户可以选择一项或多项选项。 7. JComboBox:下拉选择框,允许用户从预设的列表中选择一个值。 8. JTextArea:多行文本输入区域,适合长文本的输入和...

    javaswing窗体开发参考文档

    Swing菜单通过实现`MenuElement`接口来处理用户输入。该接口定义了如何响应鼠标和键盘事件的标准方法。这些事件最终会被传递给`MenuSelectionManager`,它负责协调整个菜单系统的选中状态和显示逻辑。 #### 六、...

    swing组件介绍(一)

    1. **基础组件**:Swing提供了许多基础组件,如按钮(JButton)、文本框(JTextField)、标签(JLabel)、复选框(JCheckBox)、单选按钮(JRadioButton)、滚动条(JScrollBar)、文本域(JTextArea)和列表(JList...

    Java swing图形界面开发与案例详解_代码

    8. JRadioButton / JCheckBox:单选按钮和复选框,用于实现多选项选择。 9. JMenuBar / JMenu / JMenuItem:创建菜单栏、子菜单和菜单项,实现菜单功能。 二、Swing布局管理 1. FlowLayout:流式布局,按从左到右、...

    java SWING 做的通讯录

    此外,Swing还支持其他的监听器,如ItemListener(用于复选框或单选按钮)、MouseListener(处理鼠标事件)等,可以根据需求灵活应用。 为了提供更好的用户体验,Swing应用还可以通过布局管理器来调整组件的位置和...

    Swing 弹出式菜单用法

    Swing 菜单控件可以在菜单中使用图标,菜单项可以为单选按钮或者复选框,并可以为菜单项指定加速键和快捷键。大多数的标准控件都可以用做菜单项。另外,Swing 菜单为程序提供了大家熟悉的菜单分隔线、弹出式菜单和子...

    菜单及Swing组件

    Swing组件包括但不限于`JButton`(按钮)、`JLabel`(标签)、`JTextField`(文本字段)、`JTextArea`(多行文本区域)、`JCheckBox`(复选框)、`JRadioButton`(单选按钮)和`JComboBox`(下拉框)。每个组件都有...

    swing 入门教程

    Swing 提供了一系列组件,如按钮、文本框、菜单等,用于创建丰富的用户界面,并处理用户的键盘输入、鼠标点击等各种交互事件。Swing 还支持颜色设置、字体选择等视觉元素的定制。 【模型-视图-控制器(MVC)设计...

    Java_11 Swing图形界面设计1

    Swing提供了一系列的基本组件,如`JButton`(按钮)、`JLabel`(标签)、`JTextField`(文本字段)、`JCheckBox`(复选框)等。这些组件覆盖了大部分常见的用户交互需求。Swing组件的名称通常以“J”开头,以区别于...

    java swing 界面源码

    - **JCheckBox** 和 **JRadioButton**:复选框和单选按钮,用于选项选择。 - **JScrollPane**:用于包裹其他组件,如JList或JTable,以提供滚动功能。 - **JMenuBar** 和 **JMenu**:菜单栏和菜单,提供程序的...

    swing皮肤包

    在Swing中,可以通过实现这些桌面环境的LookAndFeel,使得Java应用在Linux系统上看起来更接近原生应用。引入KDE或GTK的LookAndFeel,可以提高在这些环境下运行的应用的用户体验。 4. **Icons**: 图标是用户界面的...

    Swing 写的一个强悍聊天软件

    7. **事件处理**:Swing的事件模型使得我们可以为界面组件绑定事件处理器,如`ItemListener`(单选按钮或复选框的选择事件),`MouseListener`(鼠标点击事件)等。 8. **安全性**:考虑到聊天软件可能涉及敏感信息...

    java画图,可实现画图的简单功能

    这里 `Myframe` 类继承了 `JFrame` 并实现了 `ActionListener`、`MouseListener` 和 `MouseMotionListener` 接口,这意味着它可以处理用户的动作事件、鼠标事件和鼠标移动事件。 ### 3. 使用 Graphics 对象绘图 在...

    Swing控件源程序

    7. **JRadioButton** 和 **JCheckBox**: 这两种组件分别用于单选和复选,它们通常与ButtonGroup一起使用,来管理一组单选按钮或复选框。 8. **JTable**: JTable用于展示二维数据,可以用来创建表格视图,支持排序、...

Global site tag (gtag.js) - Google Analytics