记录鼠标按下位置和拖动位置,然后画矩形框,很简单的逻辑,不解释了,直接上代码
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库中,实现复选框(Checkbox)是一种常见的创建图形用户界面(GUI)的方法。复选框允许用户在多个选项中选择一个或多个。本篇将详细讲解如何利用Java Swing来创建和管理复选框,并通过实例代码进行解析...
在 Swing 中,实现鼠标拖拽来画出矩形的功能需要使用 MouseListener 监听器和 Graphics 绘图类。 首先,需要创建一个继承自 JFrame 的类 Rect,用于创建一个窗口。在构造函数中,添加一个 Draw 面板并将其设置为...
然而,在JTable中加入复选框是一个常见的需求,但是却不是那么容易实现。本文将介绍JTable中加入复选框的两种方法,并对每种方法进行详细的解释。 方法一:使用CheckBoxRenderer类 第一种方法是使用...
Swing包括一系列的组件,如按钮(JButton)、标签(JLabel)、文本框(JTextField)、文本区域(JTextArea)、复选框(JCheckBox)、单选按钮(JRadioButton)等。这些组件都继承自javax.swing.JComponent类,使得...
除了ActionListener,Swing还有许多其他类型的监听器,如ItemListener(用于复选框和单选按钮)、MouseListener(处理鼠标点击、拖动等事件)和KeyListener(处理键盘事件)。通过组合使用这些监听器,开发者可以...
- **选中状态**:对于某些组件,如复选框或单选按钮,可以通过`setSelected(true)`方法使其处于选中状态。 - **查询选中状态**:通过调用`isSelected()`方法来查询当前是否被选中。 #### 5. 用户交互 - **焦点管理...
6. JRadioButton和JCheckBox:分别用于创建单选按钮和复选框,用户可以选择一项或多项选项。 7. JComboBox:下拉选择框,允许用户从预设的列表中选择一个值。 8. JTextArea:多行文本输入区域,适合长文本的输入和...
Swing菜单通过实现`MenuElement`接口来处理用户输入。该接口定义了如何响应鼠标和键盘事件的标准方法。这些事件最终会被传递给`MenuSelectionManager`,它负责协调整个菜单系统的选中状态和显示逻辑。 #### 六、...
1. **基础组件**:Swing提供了许多基础组件,如按钮(JButton)、文本框(JTextField)、标签(JLabel)、复选框(JCheckBox)、单选按钮(JRadioButton)、滚动条(JScrollBar)、文本域(JTextArea)和列表(JList...
8. JRadioButton / JCheckBox:单选按钮和复选框,用于实现多选项选择。 9. JMenuBar / JMenu / JMenuItem:创建菜单栏、子菜单和菜单项,实现菜单功能。 二、Swing布局管理 1. FlowLayout:流式布局,按从左到右、...
此外,Swing还支持其他的监听器,如ItemListener(用于复选框或单选按钮)、MouseListener(处理鼠标事件)等,可以根据需求灵活应用。 为了提供更好的用户体验,Swing应用还可以通过布局管理器来调整组件的位置和...
Swing 菜单控件可以在菜单中使用图标,菜单项可以为单选按钮或者复选框,并可以为菜单项指定加速键和快捷键。大多数的标准控件都可以用做菜单项。另外,Swing 菜单为程序提供了大家熟悉的菜单分隔线、弹出式菜单和子...
Swing组件包括但不限于`JButton`(按钮)、`JLabel`(标签)、`JTextField`(文本字段)、`JTextArea`(多行文本区域)、`JCheckBox`(复选框)、`JRadioButton`(单选按钮)和`JComboBox`(下拉框)。每个组件都有...
Swing 提供了一系列组件,如按钮、文本框、菜单等,用于创建丰富的用户界面,并处理用户的键盘输入、鼠标点击等各种交互事件。Swing 还支持颜色设置、字体选择等视觉元素的定制。 【模型-视图-控制器(MVC)设计...
Swing提供了一系列的基本组件,如`JButton`(按钮)、`JLabel`(标签)、`JTextField`(文本字段)、`JCheckBox`(复选框)等。这些组件覆盖了大部分常见的用户交互需求。Swing组件的名称通常以“J”开头,以区别于...
- **JCheckBox** 和 **JRadioButton**:复选框和单选按钮,用于选项选择。 - **JScrollPane**:用于包裹其他组件,如JList或JTable,以提供滚动功能。 - **JMenuBar** 和 **JMenu**:菜单栏和菜单,提供程序的...
在Swing中,可以通过实现这些桌面环境的LookAndFeel,使得Java应用在Linux系统上看起来更接近原生应用。引入KDE或GTK的LookAndFeel,可以提高在这些环境下运行的应用的用户体验。 4. **Icons**: 图标是用户界面的...
7. **事件处理**:Swing的事件模型使得我们可以为界面组件绑定事件处理器,如`ItemListener`(单选按钮或复选框的选择事件),`MouseListener`(鼠标点击事件)等。 8. **安全性**:考虑到聊天软件可能涉及敏感信息...
这里 `Myframe` 类继承了 `JFrame` 并实现了 `ActionListener`、`MouseListener` 和 `MouseMotionListener` 接口,这意味着它可以处理用户的动作事件、鼠标事件和鼠标移动事件。 ### 3. 使用 Graphics 对象绘图 在...
7. **JRadioButton** 和 **JCheckBox**: 这两种组件分别用于单选和复选,它们通常与ButtonGroup一起使用,来管理一组单选按钮或复选框。 8. **JTable**: JTable用于展示二维数据,可以用来创建表格视图,支持排序、...