添加菜单被点击的监听器
JMenuItem
void setActionCommand(String actionCommand)
可以再监听器回调时通过命令名称区别是哪个菜单项触发的动作。
JMenu
JMenuItem add(JMenuItem menuItem)
添加子菜单到JMenu中
JMenu
void addSeparator()
添加一个子菜单分割线
class JMenuBarUse{
public JMenuBarUse() {
JFrame jFrame = new JFrame();
JPanel jPanel = new JPanel();
// 创建一个菜单栏
JMenuBar jMenuBar = new JMenuBar();
// 创建一级菜单
JMenu fileMenu = new JMenu("文件");
JMenu editMenu = new JMenu("编辑");
// 将一级菜单添加到菜单栏
jMenuBar.add(fileMenu);
jMenuBar.add(editMenu);
// 创建文件菜单的子菜单
JMenuItem openMenuItem = new JMenuItem("打开");
JMenuItem newMenuItem = new JMenuItem("新建");
fileMenu.add(newMenuItem);
fileMenu.add(openMenuItem);
jPanel.add(jMenuBar);
// 省略公共代码
}
}
JToolBar,工具栏。JToolBar 提供了一个用来显示常用控件的容器组件。
对于大多数的外观,用户可以将工具栏拖到其父容器四“边”中的一边,并支持在单独的窗口中浮动显示。为了正确执行拖动,建议将 JToolBar 实例添加到容器四“边”中的一边(其中容器的布局管理器为 BorderLayout),并且不在其他四“边”中添加任何子级。
构造方法和常用方法如下:
方法 | 功能 |
JToolBar(String name, int orientation) | name: 工具栏名称,悬浮显示时为悬浮窗口的标题。orientation: 工具栏方向,默认水平 |
Component add(Component comp) | 添加 工具组件 到 工具栏 |
void addSeparator(Dimension size) | 添加 分隔符组件 到 工具栏 |
Component getComponentAtIndex(int index) | 获取工具栏中指定位置的组件(包括分隔符) |
void setFloatable(boolean b) | 设置工具栏是否可拖动 |
void setOrientation(int o) | 设置工具栏方向,值为 SwingConstants.HORIZONTAL 或 SwingConstants.VERTICAL |
void setMargin(Insets m) | 设置工具栏边缘和其内部工具组件之间的边距(内边距) |
void setBorderPainted(boolean b) | 是否需要绘制边框 |
class JToolBarUse{
public JToolBarUse() {
JFrame jFrame = new JFrame();
JPanel jPanel = new JPanel();
// 创建一个工具栏
JToolBar jToolBar = new JToolBar("测试工具栏");
JButton jButton = new JButton("按钮");
jToolBar.add(jButton);
jPanel.add(jToolBar);
// 省略公共代码
}
}
5、事件
5.1、鼠标监听事件
class MouseListenerUse {
public MouseListenerUse() {
JFrame jFrame = new JFrame("鼠标监听");
JPanel jPanel = new JPanel();
/**
* 鼠标监听器
*/
jPanel.addMouseListener(new MouseAdapter() {
@Override
public void mouseEntered(MouseEvent e) {
System.out.println("鼠标进入组件区域");
}
@Override
public void mouseExited(MouseEvent e) {
System.out.println("鼠标离开组建区域");
}
@Override
public void mousePressed(MouseEvent e) {
// 获取按下的坐标(相对于组件)
System.out.println("相对组件" + e.getPoint() + ",横坐标:" + e.getX() + ", 纵坐标:" + e.getY());
// 获取按下的坐标(相对于屏幕)
System.out.println("相对屏幕" + e.getLocationOnScreen() + ",横坐标:" + e.getXOnScreen() + ", 纵坐标:" + e.getYOnScreen());
}
@Override
public void mouseReleased(MouseEvent e) {
System.out.println("鼠标释放");
}
@Override
public void mouseClicked(MouseEvent e) {
// 鼠标在组件区域内按下并释放(中间没有移动光标)才识别为被点击
System.out.println("鼠标点击");
}
});
/**
* 鼠标移动/拖动监听器
*/
jPanel.addMouseMotionListener(new MouseMotionAdapter() {
@Override
public void mouseDragged(MouseEvent e) {
// 鼠标保持按下状态移动即为拖动
System.out.println("鼠标拖动");
}
@Override
public void mouseMoved(MouseEvent e) {
System.out.println("鼠标移动");
}
});
/**
* 鼠标滚轮监听器
*/
jPanel.addMouseWheelListener(new MouseWheelListener() {
@Override
public void mouseWheelMoved(MouseWheelEvent e) {
// e.getWheelRotation() 为滚轮滚动多少的度量
System.out.println("mouseWheelMoved: " + e.getWheelRotation());
}
});
// 省略公共代码
}
}