javaSE——Swing编程

1、Swing概述

    Swing提供了比AWT更多的图形界面组件,并且Swing采用了MV(模型——视图——控制器)设计模式,Swing优势如下:

  1. Swing组件不再依赖于本地平台的GUI,无需采用各种平台的GUI交集,因此Swing提供的图形界面组件远超过AWT组件。

  2. Swing不再依赖于本地平台GUI,因此不会产生与平台相关的bug。

  3. Swing组件在各种平台上运行时可以保证具有相同的图形界面外观。

  4. Swing采用了MVC设计模式

  5. Swing在不同的平台上表现一致,并且有能力提供本地平台不支持的显示外观。

2、Swing基本组件的用法

    将Swing组件按功能分为7类:

  1. 顶层容器:JFrame、JApplet、JDialog、JWindow

  2. 中间容器:JPanel、JScrollPanel、JSplitPanel、JToolBar

  3. 特殊容器:在用户界面上具有特殊作用的中间容器,比如JInternalFrame、JRootPane、JLayeredPane和JDestopPane

  4. 基本组件:实现人机交互的组件,比如JButton、JComboBox、JList、JMenu、JSlider

  5. 不可编辑信息的现实组件:向用户显示不可编辑信息的组件,比如JLabel、JProgressBar和JToolTip

  6. 可编辑信息的现实组件:向用户显示能被编辑的格式化信息的组件,比如JTable、JTextArea、JTextField

  7. 特殊对话框组件:可以直接产生特殊对话框的组件,比如JColorChooesr和JFielChooser

    使用Swing创建窗口应用

    为组件设置边框

    可以调用JComponent提供的setBorder(Border b)方法为Swing组件设置边框。

    为Swing组件添加边框步骤如下:

  1. 使用BorderFaactory或者XxxxBorder创建XxxBorder实例

  2. 调用Swing组件的setBorder(Border b)方法为该组件设置边框

    Swing组件的双缓冲和键盘驱动

    所有的Swing组件默认启用双缓冲绘图技术

    所有的Swing组件都提供了简单的键盘驱动

    使用JToolBar创建工具条

    Swing提供了JtoolBar类来创建工具条,创建JtoolBar对象时可以指定name和orientaton两个参数

  1. name:该参数指定该工具条的名称

  2. orientation:该参数指定该工具条的方向

    创建JtoolBar对象后,还有如下几个常用方法:

  1. JButton add(Action a):通过Action对象为JtoolBar添加对应的工具按钮

  2. void addSeparator(Dimension size):向工具条这种添加指定大小的分隔符

  3. void setFloatable(boolean b):设置该工具条是否可拖动

  4. void setMargin(Insets m):设置工具条边框和工具按钮之间的页边距

  5. void setOrientation(int o):设置工具条的方向

  6. void setRollover(boolean rollover):设置工具条的rollover状态

    使用JOtionPane

    JOtionPane提供了4个方法来创建对话框:

  1. showMessageDialog/showInternalMessageDialog:消息对话框,告知用户某事已经发生,用户只能单机“确定”按钮

  2. showConfirmDialog/showInternalConfirmDialog:确认对话框

  3. showInputDialog/showInteralInputDialog:输入对话框

  4. showOptionDialog/showInternalDialog:自定义选项对话框

3、Swing中的特殊容器

    JSplitPane

    JSplitPane用于创建一个分割面板,可以将一个组件分割成两个部分,并提供一个分割条,用户可以拖到分割条来调整两个部分的大小

    创建分割条代码:

new JSplitPane(方向,左/上组件,右/下组件);

    JTabbedPane

    JTabbedPane用来在窗口上放置多个标签页,创建步骤:

  1. 创建一个JTabbedPane对象,其中两个参数分别为:tabPlacement:该参数指定标签页标题的放置位置;tabLayoutPolicy:指定标签页标题的布局策略。

  2. 调用JTabbedPane对象的插入、修改、删除方法。

  3. 如果需要让某个标签页显示出来,则可以通过调用JTabbedPane的setSelectedIndex()方法来实现。

  4. 程序还可以通过JTabbedPane提供的一系列方法来操作JTabbedPane的相关属性。

  5. 如果程序需要监听用户标签页的事件,则可以使用ChangeListener监听器来监听JTabbedPane对象。

4、创建进度条

    创建进度条

    使用JProgressBar创建,步骤如下:

  1. 创建一个JProgressBar对象,可以指定三个参数,用于设置进度条的排列方向(竖直和水平)、进度条的最大值和最小值。也可以在创建该对象是不传入任何参数,在后买你程序中修改这三个属性。

  2. 调用该对象的常用方法设置进度条的普通属性。

  3. 当程序中工作进度改变时,调用JProgressBar对象的setValue()方法,当进度条的完成进度发生改变时,程序还可以调用进度条对象的如下两个方法:

    • double getPercentComplete():返回进度条的完成百分比

    • String getString():返回进度字符串的当前值

    创建进度对话框

    ProggressMonitor可以直接创建一个进度对话框

final ProgressMonitor dialog = new  ProgressMonitor(null,"等待任务完成","已完成",0,target.getAmoubt());

5、使用JList、JComboBox创建列表框

    简单列表框

    使用JList、JComboBox创建列表框的步骤如下:

  1. 使用JList或者JComboBox的构造器创建一个列表框对象

  2. 调用JList或者JComboBox的各种方法来设置列表框的外观行为

  3. 如果需要监听列表框选择项的变化,则添加对应的监听器来实现

6、使用JTree和TreeModel创建树

    创建树

    直接使用JTree的构造器创建JTree就行,构造器如下:

  1. JTree(TreeModel newModel):使用指定的数据模型创建JTree对象,默认显示根节点。

  2. JTree(TreeNode root):使用root作为根节点创建JTree对象,默认显示根节点。

  3. JTree(TreeNode root,boolean asksAllowsChildren):使用root作为根节点创建JTree对象。

import javax.swing.JFrame;

import javax.swing.JScrollPane;

import javax.swing.JTree;

import javax.swing.tree.DefaultMutableTreeNode;

public class JTreeText{

     JFrame jf = new JFrame("简单树");

     JTree Tree;

     DefaultMutableTreeNode root;

     DefaultMutableTreeNode guangdong;

     DefaultMutableTreeNode guangxi;

     DefaultMutableTreeNode foshan;

     DefaultMutableTreeNode shantou;

     DefaultMutableTreeNode guilin;

     DefaultMutableTreeNode nanning;

     public void init() {

         //依次创建树中的节点

         root = new DefaultMutableTreeNode("中国");

         guangdong = new DefaultMutableTreeNode("广东");

         guangxi = new DefaultMutableTreeNode("广西");

         foshan = new DefaultMutableTreeNode("佛山");

         shantou = new DefaultMutableTreeNode("汕头");

         guilin = new DefaultMutableTreeNode("桂林");

         nanning = new DefaultMutableTreeNode("南宁");

         

         //通过add()方法建立树节之间的父子关系

         guangdong.add(foshan);

         guangdong.add(shanstou);

         guangxi.add(guilin);

         guangxi.add(nanning);

         root.add(guangdong);

         root.add(guangxi);

         

         //以根节点创建数

         jf.add(new JScrollPane(Tree));

         jf.pack();

         jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

         jf.setVisible(true);

     }

     public static void main(String[] args) {

         new JTreeText().init();

     }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DF10F-0001A

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值