JAVA Swing 与 GUI Form

写在前面

java常用于后端开发,用于UI的Swing API较少有人用,但是在做一些窗口程序还是不得不用到,比如做idea插件的时候。

1、idea快速创建GUI Form

idea中可以快速构建swing UI

图1
如下,新建GUI Form后,会产生两个文件:一个java文件,一个xml文件。
两个文件是关联的,java文件可以向程序提供xml文件的内容,xml文件中记录了所有UI组件的信息。
右边可以通过拖动的形式进行页面设计。

图2

2、认识组件

注意,部分组件需要JDK7以上

组件说明
JFrame一个界面只有一个JFrame窗体组件,但可以有多个JPanel。idea插件页面不考虑JFrame。
JPanel面板组件,如上图中右边所有组件都可以放到面板中。
Hspacer、Vspacer控制组件间的水平间距、垂直间距
JscrollPane滚动面板,可与JTextPane等组成可滚动的区域
JScrollBar单向滚动条
JButton、JRadioButton、JCheckBox按钮、单选按钮、多选按钮
JLabel标签,显示固定文字
JTextField、JPasswordField、JFormattedTextField单行文本编辑框
JTextArea文本框
JTextPane、JEditePane可以编辑和显示html,rtf和普通文本的富文本组件
JComboBox可编辑下拉组件
JTable表格
JList列表
JTree树结构,适合多级显示
JTabbedPane选项卡面板
JSplitPane分隔面板,用于两两分隔,多个分隔用它嵌套实现
JSpinner单行输入框+上下选择器
JSlider移动滑块,用来选值
JSeparator分割线
JProgressBar进度条
JToolBar可以在程序的主窗口之外浮动或是托拽,里面可以添加各种组件
JTabbedPane选项卡面板

在这里插入图片描述

JSpinner 单行输入框+上下选择器

在这里插入图片描述

JSlider 移动滑块

在这里插入图片描述

3、了解各个组件的属性

一些通用属性,当然这些属性也可以通过java代码去控制

在这里插入图片描述
宽度与高度

在这里插入图片描述

4、事件处理

4.1、事件监听器

EventListner 它是一个标记接口,每一个监听器接口必须扩展它。
如下示例是监听JTextArea是键盘事件
在这里插入图片描述
事件监听器接口

监听器接口说明
ActionListener接收动作事件
ComponentListener接收组件事件
ItemListener接收项目事件
KeyListener接收按键事件
MouseListener接收鼠标事件
WindowListener接收窗口事件
AdjustmentListener接收调整事件
ContainerListener接收容器事件
接收容器事件鼠标移动事件
FocusListener接收焦点事件

5、布局管理器

管理器说明
BorderLayout安排组件适应于五个地区:东、西、北、南和中心。
CardLayout对象把容器中的每一个组件看成一个卡片。一次只有一个卡片是可见的。
FlowLayout是默认的布局。它用定向流动来布局组件。
GridLayout用一个矩形网格形式来管理组件。
GridBagLayout这是最灵活的布局管理器类。在不需要相同大小的组件的情况下,GridBagLayout 对象垂直、水平或沿着它们的基线来排列组件。
GroupLayout分层次地归类组件,为了在一个容器中放置它们。
SpringLayout根据一组约束安置与它相关的容器的孩子。
GridLayoutManageridea布局管理器,仅idea SDK中有

6、生成main方法

如果是idea插件项目,不用生成main方法。

在这里插入图片描述
然后运行该方法,可以编译出GUI对的java代码

  • 4
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现界面跳转,你可以使用Java Swing框架中的CardLayout布局管理器。CardLayout布局管理器可以让你在同一个容器中添加多个面板,并且只显示其中一个面板,其他面板隐藏。当需要切换显示的面板时,只需要调用CardLayout的show方法即可。 下面是一个简单的示例代码,实现了两个面板之间的切换: ```java import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class MainFrame extends JFrame implements ActionListener { private JPanel panelContainer; private CardLayout cardLayout; public MainFrame() { setTitle("界面跳转示例"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 创建两个面板 JPanel panel1 = new JPanel(); panel1.add(new JLabel("这是第一个面板")); JButton button1 = new JButton("跳转到第二个面板"); button1.addActionListener(this); panel1.add(button1); JPanel panel2 = new JPanel(); panel2.add(new JLabel("这是第二个面板")); JButton button2 = new JButton("回到第一个面板"); button2.addActionListener(this); panel2.add(button2); // 创建面板容器,并设置CardLayout布局管理器 panelContainer = new JPanel(); cardLayout = new CardLayout(); panelContainer.setLayout(cardLayout); // 将两个面板添加到面板容器中 panelContainer.add(panel1, "panel1"); panelContainer.add(panel2, "panel2"); // 将面板容器添加到主窗口 setContentPane(panelContainer); pack(); setLocationRelativeTo(null); setVisible(true); } @Override public void actionPerformed(ActionEvent e) { // 根据按钮的名称切换显示的面板 if (e.getActionCommand().equals("跳转到第二个面板")) { cardLayout.show(panelContainer, "panel2"); } else if (e.getActionCommand().equals("回到第一个面板")) { cardLayout.show(panelContainer, "panel1"); } } public static void main(String[] args) { new MainFrame(); } } ``` 在这个示例中,我们创建了两个面板,分别是panel1和panel2。然后创建了一个面板容器panelContainer,并将两个面板添加到面板容器中。在按钮的ActionListener中,我们使用CardLayout的show方法切换显示的面板。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值