简单了解+demo(一)

时间:2022-02-12 05:35:37

  工作以来,一直都是基于java web方向的开发,并没有java方向GUI相关的开发经验,不过好在之前用过winform开发。有了基础的套路,想来搞一下Swing也没有什么压力!到网上搜了一下相关的学习资料,有拖拖拽拽的控件,也有代码实现的。为了加深印象和理解,直接搞代码吧~

  参考了网上的相关博客,先有一个大体的了解,比如:

  选择了一个PDF作为学习的参考:Java Swing图形界面开发与案例详解 .王鹏等.扫描版.pdf

学习Swing之前,先来了解一下AWT:

  AWT(Abstract Windows Toolkit):抽象窗口工具集,提供了与本地图形化界面交互的接口,底层调用本地操作系统。由于实现依赖于本地操作系统,所以是重量级组件,Swing则是在实现AWT的基础上做扩展的,组件是以纯java的方式来实现的,不依赖于底层的操作系统,所以是轻量级组件。AWT设计的初衷是开发小的应用程序的图形界面,而非专门用于用户界面(UI)的工具包而设计,所以做UI有些欠缺,,比如剪切板、弹出菜单、滚动等功能都不支持。

  接着照着第一章的例子做了3个demo,demo中不用关心具体的代码细节,先看大体的框架即可。

  demo1:登录窗口

  demo2:菜单栏、工具栏

  demo3:tab页签

demo1:

package com.comall.fastsvn.test.chapter1; import javax.swing.*; import java.awt.*; /** * 登录界面 */ public class SwingDemo1 extends JPanel { private static final int JFRAME_WIDTH = 300; private static final int JFRAME_HEIGHT= 150; private SwingDemo1(){ //窗口-顶层面板 JFrame jFrame = new JFrame("登录窗口"); jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //网格布局,容器中的方法 GridBagLayout gridBagLayout = new GridBagLayout(); setLayout(gridBagLayout); jFrame.add(this,BorderLayout.WEST); jFrame.setSize(JFRAME_WIDTH,JFRAME_HEIGHT); //位置:居中 Dimension dimension = Toolkit.getDefaultToolkit().getScreenSize(); jFrame.setLocation((int)(dimension.getWidth() - JFRAME_WIDTH ) / 2,(int)(dimension.getHeight() - JFRAME_HEIGHT ) / 2); //组件 JLabel tipLabel = new JLabel("欢迎来到Java世界"); JLabel userLabel = new JLabel("用户名:"); JLabel pwdLabel = new JLabel("密码:"); JTextField userText = new JTextField(15); JTextField pwdText = new JTextField(15); JButton submitBtn = new JButton("登录"); JButton cancelBtn = new JButton("取消"); //网格布局 GridBagConstraints gridBagConstraints = new GridBagConstraints(); gridBagConstraints.fill = GridBagConstraints.NONE; gridBagConstraints.anchor = GridBagConstraints.EAST; gridBagConstraints.weightx = 3; gridBagConstraints.weighty = 4; //添加组件并指定组件的位置 addComponent(tipLabel,gridBagConstraints,0,0,4,1); addComponent(userLabel,gridBagConstraints,0,1,1,1); addComponent(pwdLabel,gridBagConstraints,0,2,1,1); addComponent(userText,gridBagConstraints,2,1,1,1); addComponent(pwdText,gridBagConstraints,2,2,1,1); addComponent(submitBtn,gridBagConstraints,0,3,1,1); addComponent(cancelBtn,gridBagConstraints,2,3,1,1); //面板可见、不可编辑 jFrame.setResizable(false); jFrame.setVisible(true); } /** * 添加组件 * @param component 组件 * @param gridBagConstraints * @param x 行 * @param y 列 * @param w 宽 * @param h 高 */ private void addComponent(Component component,GridBagConstraints gridBagConstraints,int x,int y,int w,int h){ gridBagConstraints.gridx = x; gridBagConstraints.gridy = y; gridBagConstraints.gridwidth = w; gridBagConstraints.gridheight = h; //Container中的方法 add(component,gridBagConstraints); } public static void main(String[] args) { new SwingDemo1(); } }

运行效果:

demo2: