java Swing(容器,简单控件,布局管理器)

合集下载

java swchi用法

java swchi用法

java swchi用法引言是文章开篇部分,用于介绍文章的背景、目的和结构。

在本文中,我们将对Java Swing的使用进行详细介绍和讨论。

1.1 概述:Java Swing是Java语言提供的一套图形用户界面(Graphical User Interface, GUI)工具包,它为开发者提供了创建丰富、交互性强的图形界面应用程序的能力。

通过使用Java Swing,开发者可以轻松地设计和实现窗口、标签、按钮等各种UI组件,并与用户进行交互。

1.2 文章结构:本文将分为五个主要部分来介绍Java Swing的使用方法和常用组件。

首先,在“2. Java Swing简介”部分中,我们将对Java Swing进行基本介绍,包括其定义、特点以及应用领域。

然后,在“3. 开发Java Swing应用程序的基本步骤”部分,我们将详细说明如何安装和配置Java开发环境,并给出开发Swing应用程序的基本步骤。

接下来,在“4. Java Swing常用组件及用法示例”部分中,我们将逐一介绍常见的Swing组件,如JFrame窗口类、JLabel标签类以及JButton按钮类,并给出相应的使用方法示例。

最后,在“5. 结论与展望”部分中,我们将对Java Swing的优势与局限性进行总结,并展望Java GUI开发的未来趋势。

1.3 目的:本文旨在帮助读者了解和掌握Java Swing的基本使用方法和常用组件,以便能够快速开发出功能强大、用户友好的图形界面应用程序。

通过学习本文,读者将能够了解Swing的特点和应用领域,并掌握开发Swing应用程序的基本步骤。

同时,本文还将通过具体示例介绍常见的Swing组件的用法,以帮助读者更好地理解和运用这些组件。

以上是“1. 引言”部分内容的详细描述。

接下来,我们将继续撰写文章其他部分的内容。

2. Java Swing 简介2.1 什么是Java SwingJava Swing是一组用于创建图形用户界面(GUI)的Java库。

java swing布局管理器

java swing布局管理器
new DefaultMutableTreeNode(new MyNode("增加班级","42"));
//创建跟节点
private DefaultTreeModel dtm=new DefaultTreeModel(dmtnRoot);
//创建树状列表控件
private JTree jt=new JTree(dtm);
2.1、
在开发系统的各个功能模块之前,首先要完成主界面的设计,此系统有两个主窗体,教师客户端主窗体和学生客户端主窗体,不同的是学生客户端主窗体与教师客户端主窗体功能有差异。写主界面的时候要为各个功能模块留出位置,以便将各个功能模块添加到主窗体,开发主界面的代码框架如下(这里写的是教师客户端主窗体):
new DefaultMutableTreeNode(new MyNode("学生信息管理","2"));
private DefaultMutableTreeNode dmtn3=
new DefaultMutableTreeNode(new MyNode("课程管理","3"));
private DefaultMutableTreeNode dmtn4=
new DefaultMutableTreeNode(new MyNode("课程成绩录入","32"));
private DefaultMutableTreeNode dmtn34=
new DefaultMutableTreeNode(new MyNode("添加课程","34"));
private DefaultMutableTreeNode dmtn42=

JavaSwing界面设计(所有控件及示例)

JavaSwing界面设计(所有控件及示例)
➢标签内容一般不需要改变,但也可以使用setText和setIcon方 法进行改变 ➢例如当使用同一标签显示不同的图片时,就可使用setIcon方 法实现
25
示例:学生信息管理系统
步骤二:添加标签(要录入的基本信息的名称)
JFrame f=new JFrame(); …… Container con=f.getContentPane(); Jpanel pan=new JPanel(); JLabel l_xm=new JLabel("姓名"); pan.add(l_xm); JLabel l_xb=new JLabel("性别"); pan.add(l_xb); …… con.add(pan); f.setVisible(true);
3
用户界面概述
用户界面的类型
字符用户界面(CUI):例如,MS-DOS 图形用户界面(GUI):例如,Microsoft Windows
GUI的组件
组件
基本的控制组件,例如:Button、Label等。 容器:能容纳和排列组件的组件
组件继承它的父容器的性质
4
Label
Frame Window
创建图标和图像对象 a) ImageIcon ii = new ImageIcon(“x.gif ”); b) Image image = ii.getImage();
设置 setIconImage(image);
19
界面的基本组织方式
由JFrame创建初始的用户界面 由JPanel、JScrollPane、JTabbedPane、JSplitPane、
添加中间容器JPanel JFrame f=new JFrame(); f.setTitle("学生信息管理系统");

第8章 Swing GUI布局管理器及容器的使用-Java语言GUI程序设计-赵满来-清华大学出版社

第8章 Swing GUI布局管理器及容器的使用-Java语言GUI程序设计-赵满来-清华大学出版社

8.1 自由设计
8.1.1 概述 自由设计是NetBeans IDE将布局管理器与布
局工具结合起来的一种技术,是GUI构建器 的默认布局。
使用自由设计方法设计布局时,使用鼠标 拖拽改变组件位置和大小,使用工具按钮 和菜单设置组件对齐方式、更改大小及可 调性等操作,NetBeans IDE理解并转换为对 应的GroupLayout布局管理代码。
面板中组件的布局取决于所采用的布局管理器。
8.6.3 应用举例 例8.5 综合运用布局管理器、填充器和面板组
件改进8.2节完成的ScoreInput窗体的界面布局。 chap08项目book.ScoreDemo. ScoreInput1
8.7 滚动窗格
Swing的滚动窗格容器通过提供水平和垂直 滚动条
第8章 Swing GUI布局管理器及 容器的使用
本章内容:
8.1 自由设计 8.2 网格式布局和网格包布局 8.3 Box布局 8.4 其他布局管理器 8.5 填充器Swing Filler 8.6 面板容器 8.7 滚动窗格 8.8 拆分窗格 8.9 标签化窗格 8.10 工具栏
chap08项目book. layoutdemo. NumberAddition
8.2 网格式布局和网格包布局
8.2.1 网格式布局 网格式布局GridLayout把组件放置在一个个
矩形网格中。 网格是由虚细线分割成多个单元格的可视
区域组成。 网格线通过网格索引数来指定 例8.2采用网格式布局设计一个简单四则运
8.8 拆分窗格
8.8.1 使用方法 分别向两个部分添加组件,取代【左键】
和【右键】按钮占位符。
8.8.2 属性
(1)orientation (2)dividerLocation (3)dividerSize (4)onTouchExpandable (5)resizeWeight

java布局中的BoxLayout布局,使用BoxLayout进行Swing布局

java布局中的BoxLayout布局,使用BoxLayout进行Swing布局

java布局中的BoxLayout布局,使⽤BoxLayout进⾏Swing布局在⽤户使⽤ Java Swing 进⾏⽤户界⾯开发过程中,会碰到如何对 Java Swing 的控件进⾏布局的问题。

Swing 的控件放置在容器(Container) 中,容器就是能够容纳控件或者其它容器的类,容器的具体例⼦有 Frame、Panel 等等。

容器需要定义⼀个布局管理器来对控件进⾏布局管理,Swing 当中提供的主要的布局管理器有 FlowLayout、BorderLayout、BoxLayout、GridLayout 和 GridBaglayout, 它们的主要特点如表 1 所⽰:表 1. Swing 中的⼀些主要布局管理器的⽐较布局管理器特点FlowLayout把控件按照顺序⼀个接⼀个由左向右的⽔平放置在容器中,⼀⾏放不下,就放到下⼀⾏BorderLayout将整个容器划分成东南西北中五个⽅位来放置控件,放置控件时需要指定控件放置的⽅位BoxLayout可以指定在容器中是否对控件进⾏⽔平或者垂直放置,⽐ FlowLayout 要更为灵活GridLayout将整个容器划分成⼀定的⾏和⼀定的列,可以指定控件放在某⾏某列上GridBagLayout是 Swing 当中最灵活也是最复杂的布局管理器,可对控件在容器中的位置进⾏⽐较灵活的调整本⽂主要关注在 BoxLayout 布局管理器的使⽤上。

我们⾸先对 BoxLayout 作⼀下介绍。

BoxLayout 介绍如前所述,BoxLayout 可以把控件依次进⾏⽔平或者垂直排列布局,这是通过参数 X_AXIS、Y_AXIS 来决定的。

X_AXIS 表⽰⽔平排列,⽽ Y_AXIS 表⽰垂直排列。

BoxLayout 的构造函数有两个参数,⼀个参数定义使⽤该 BoxLayout 的容器,另⼀个参数是指定 BoxLayout 是采⽤⽔平还是垂直排列。

下⾯是⼀个创建 BoxLayout 实例的例⼦:JPanel panel=new JPanel();BoxLayout layout=new BoxLayout(panel, BoxLayout.X_AXIS);panel.setLayout(layoout);在这个例⼦中,⼀个 BoxLayout 布局管理器的实例 layout 被创建,这个实例被设置为 panel 的布局管理器,该布局管理器采⽤了⽔平排列来排列控件。

JavaSwing介绍

JavaSwing介绍

JavaSwing介绍Swing 是⼀个为Java设计的GUI⼯具包。

Swing是JAVA基础类的⼀部分。

Swing包括了图形⽤户界⾯(GUI)器件如:⽂本框,按钮,分隔窗格和表。

Swing提供许多⽐AWT更好的屏幕显⽰元素。

它们⽤纯Java写成,所以同Java本⾝⼀样可以跨平台运⾏,这⼀点不像AWT。

它们是JFC的⼀部分。

它们⽀持可更换的⾯板和主题(各种操作系统默认的特有主题),然⽽不是真的使⽤原⽣平台提供的设备,⽽是仅仅在表⾯上模仿它们。

这意味着你可以在任意平台上使⽤JAVA⽀持的任意⾯板。

轻量级组件的缺点则是执⾏速度较慢,优点就是可以在所有平台上采⽤统⼀的⾏为。

Hello World 程序HelloWorldSwing.java ⽂件代码如下:1import javax.swing.*;2public class HelloWorldSwing {3/**{4 * 创建并显⽰GUI。

出于线程安全的考虑,5 * 这个⽅法在事件调⽤线程中调⽤。

6*/7private static void createAndShowGUI() {8// 确保⼀个漂亮的外观风格9 JFrame.setDefaultLookAndFeelDecorated(true);1011// 创建及设置窗⼝12 JFrame frame = new JFrame("HelloWorldSwing");13 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);1415// 添加 "Hello World" 标签16 JLabel label = new JLabel("Hello World");17 frame.getContentPane().add(label);1819// 显⽰窗⼝20 frame.pack();21 frame.setVisible(true);22 }2324public static void main(String[] args) {25// 显⽰应⽤ GUI26 javax.swing.SwingUtilities.invokeLater(new Runnable() {27public void run() {28 createAndShowGUI();29 }30 });31 }32 }执⾏以下命令输出结果:$ javac HelloWorldSwing.java$ java HelloWorldSwing⼀个⽤户登录框实例SwingLoginExample.java ⽂件代码如下:1import javax.swing.JButton;2import javax.swing.JFrame;3import javax.swing.JLabel;4import javax.swing.JPanel;5import javax.swing.JPasswordField;6import javax.swing.JTextField;7public class SwingLoginExample {89public static void main(String[] args) {10// 创建 JFrame 实例11 JFrame frame = new JFrame("Login Example");12// Setting the width and height of frame13 frame.setSize(350, 200);14 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);1516/* 创建⾯板,这个类似于 HTML 的 div 标签17 * 我们可以创建多个⾯板并在 JFrame 中指定位置18 * ⾯板中我们可以添加⽂本字段,按钮及其他组件。

JAVA SWING 4中布局方式

JAVA SWING 4中布局方式

创建一个新的流布局管理器,它具有指定的对齐方式以及指定的水 平和垂直间隙。
方法摘要
void
addLayoutComponent(String name, Component comp) addLayoutComponent 将指定的组件添加到布局中。 getAlignment() getAlignment 获取此布局的对齐方式。 getAlignOnBaseline() getAlignOnBaseline 如果组件将沿其基线垂直对齐,则返回 true。 getHgap() getHgap 获取组件之间以及组件与 Container 的边之间的水平间 隙。
构造方法摘要
BorderLayout() BorderLayout 构造一个组件之间没有间距的新边框布局。 BorderLayout(int hgap, int vgap) BorderLayout 构造一个具有指定组件间距的边框布局。
方法摘要
void
addLayoutComponent(Component comp, Object constraints) addLayoutComponent 使用指定的约束对象将指定组件添加到布局中。 addLayoutComponent(String name, Component comp) addLayoutComponent 已过时。 已过时。 由 addLayoutComponent(Component, Object)
float
float
Component getLayoutComponent getLayoutComponent(Container target, Object constraints)
Component getLayoutComponent getLayoutComponent(Object constraints)

Java swing布局详解(附示例图)

Java swing布局详解(附示例图)

当选择使用JPanel和顶层容器的content pane时,需要考虑布局管理。

JPanel缺省是初始化一个FlowLayout,而content pane缺省是初始化一个BorderLayout。

下面将分别介绍几种最常用的布局管理器:FlowLayout、BorderLayout、BoxLayout、CardLayout、GridLayout和GridBagLayout。

代码演示每一个布局管理器都会有一个代码演示,xxxLayoutDemo.java(见附件)。

这些文件主要有三个方法组成:addComponentsToPane()提供布局逻辑(依据不同的布局管理器和UI内容)。

Java代码1public static void addComponentsToPane(Container pane) {。

}2/**3*createAndShowGUI()实例化一个JFrame,通过它的ContentPane加载布局逻辑内容。

4*/5private static void createAndShowGUI() {6// Create and set up the window.7JFrame frame = new JFrame("FlowLayoutDemo");8frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);9// Set up the content pane.10addComponentsToPane(frame.getContentPane());11// Display the window.12frame.pack();13frame.setVisible(true);14}15//main()程序入口,单独起一个线程,实例化UI。

16public static void main(String[] args) {17javax.swing.SwingUtilities.invokeLater(new Runnable() {18public void run() {19createAndShowGUI();20}21});22}FlowLayoutFlowLayout类是最简单的布局管理器。

深入浅出java swing程序设计-概述说明以及解释

深入浅出java swing程序设计-概述说明以及解释

深入浅出java swing程序设计-概述说明以及解释1.引言1.1 概述Java Swing是一种用于构建图形用户界面(Graphical User Interface,简称GUI)的Java库。

它为开发人员提供了丰富的组件和布局管理器,可以轻松创建具有各种功能和样式的交互式应用程序。

Java Swing的出现填补了Java原生GUI工具包的不足,为开发人员提供了更多的自定义和灵活性。

与AWT(Abstract Window Toolkit)相比,Swing提供了更多的组件和界面控件,同时具备更好的跨平台性。

Java Swing不仅仅是一个图形用户界面库,它还提供了一整套用于处理用户输入、图形绘制、多媒体展示等功能的类和工具。

开发人员可以利用这些工具快速构建具有丰富交互性的应用程序。

本文将深入浅出地介绍Java Swing程序设计的基本概念和技巧。

我们将从Swing的组件和布局开始,逐步展示如何创建简单且功能强大的用户界面。

通过学习本文,读者将能够掌握Java Swing的核心知识,并能够利用这些知识开发出符合自己需求的应用程序。

本文的目的是帮助读者快速上手Java Swing,了解其基本概念和使用方法。

同时,我们也将展望Java Swing的未来发展,探讨其在现代应用程序开发中的重要性和应用前景。

在接下来的正文部分,我们将详细介绍Java Swing的基本概念,包括组件、事件、布局等内容。

同时,我们还将给出一些实际的例子,以便读者更好地理解和应用所学知识。

总之,本文将从大纲所列的各个方面对Java Swing进行深入浅出的探讨,旨在帮助读者全面了解和掌握Java Swing程序设计的基本技巧和应用方法。

希望读者能够通过本文的学习,具备自主开发Java Swing应用程序的能力,并能在实际项目中灵活应用所学知识。

1.2 文章结构本文主要以深入浅出的方式介绍Java Swing程序设计。

文章分为引言、正文和结论三个部分,每个部分有相应的小节。

swing 组件和容器——java swing 组件技术(中)

swing 组件和容器——java swing 组件技术(中)

swing 组价和容器——java swing 组件和技术(中)一、swing组件和容器概览1.顶层容器(JFrame,JDialog,JApplet)JFrame—框架,主要用来设计应用程序的图像界面JDialog—对话框,通常用来设计具有依赖关系的窗口JApplet—小应用程序,主要用来设计嵌入网页中运行的java程序2.一般容器普通容器(JPanel、JScrollPane、JToolbar、JSplitPane、JTabbedPane) JPanel—面板,通常只有背景颜色的普通容器JScrollPane—滚动窗格,具有滚动条JToolbar—工具条,通常将多个组件排成一排或者一列JSplitPane—分裂窗格,用来装两个组件的容器JTabbedPane—选项卡窗格,允许多个组件共享相同的界面空间专用容器(JLayeredPane、JRootPane 、JInternalFrame)JLayeredPane—分层窗格,给窗格增加了深度的概念JRootPane—根窗格,一般是自动创建的容器JInternalFrame—内部窗格,可以在一个窗口内显示若干个类似于框架的窗口3.基本控件(JButton、JCombobox、JList、JMenu、JSlider、JTextField)4.不可编辑信息组件(JLabel、JProgressBar、JToolTip等)5.可编辑组件(JColorChooser、JFileChooser、Jtabel、JTextArea、JTree等)二、常用的swing组件和容器1.JFrame✧顶层容器,默认不可见;默认布局方式为BorderLayout✧构造函数:●JFrame()●JFrame(String title)//title 为框架的标题内容✧JFrame常用方法●setDefaultCloseOperation(int operation)—设置关闭框架的行为参数operation一般是JFrame. EXIT_ON_CLOSE,表示关闭框架时,则退出程序●setSize(int width, int height)—设置框架的大小●setVisible(boolean b)—设置框架是否可见,默认为false●getContentPane()—获取顶层容器的内容面板●add(Component comp)—往内容面板添加组件●setLayout(LayoutManagermgr)—设置布局方式,默认为BorderLayoutexample:JDialog 和JOptionPane的demo2.JDialog 和JOptionPanea)JDialog✧在已有的窗口上创建对话框,可以使用此类创建自定义的对话框✧构造函数:⏹JDialog(Dialog owner, String title, boolean modal)⏹JDialog(Frame owner, String title, boolean modal)owner—指定对话框的父窗口title—对话框的标题modal—对话框的模式(true为“有模式对话框”,false为“无模式对话框”✧JDialog常用方法⏹setSize(int width, int height)—设置对话框的大小⏹getContentPane()—获取顶层容器的内容面板⏹add(Component comp)—往内容面板添加组件⏹setLayout(LayoutManagermgr)—设置布局方式,默认为BorderLayoutb)JOptionPane✧提供一些现成的、各种常用的标准对话框(有模式的对话框)✧JOptionPane类里静态方法众多,但几乎所有静态方法都遵循showXxxDialog()的形式,如下:这四种方法的参数都遵循一致的模式:①ParentComponent:指示对话框的父窗口对象,一般为当前窗口。

java Swing(容器,简单控件,布局管理器)

java Swing(容器,简单控件,布局管理器)

JTextArea 组件用来接受用户输入的多行文本信息 可用来实现滚动条效果 构造函数如下:
JTextArea() JTextArea(int rows, int cols):rows表示行数,cols表示列数 JTextArea(String text):text表示默认文字 JTextArea(String text, int rows, int cols)
布局管理器
用户界面上的屏幕组件可以按照一定的格式布局
例如水平排列,或按网格方式排列
布局管理器类是一组类
实现youtManager接口 帮助在容器中放置组件
常用布局如下
BorderLayout FlowLayout GridLayout
FlowLayout
左上角 流布局是面板的默认布局管理器
Swing(一)
课程目标
理解Java的图形化编程方式 掌握Swing的各种编程方法 掌握Swing的常用组件 掌握事件处理及监听者模式 使用Swing设计工程界面
本课目标
了解Java的GUI技术:AWT,SWING 理解Swing与AWT的区别 了解swing结构 容器(JFrame,JPanel) 控件(JButton,JTextFild) 布局管理器(FlowLayout,BorderLayout,GridLayout)
swing相对awt来说swing功能更强大使用更方便swing并没有代替awtswing只是awt的子类它的使用依赖于awtawt创建gui创建gui通过javaawt容器组件布局管理器字体事件图形和绘制方法包含awt容器组件以图形表示的对象允许用户交互创建并构造用于选择新字体的对象用于用户和系统交互使用awt图形方法相对于窗口绘制图形定义gui组件的位置awt重量级组件awt重量级组件swing创建gui创建gui通过javaxswing容器组件可改变的外观java2d图形绘制包含swing组件以图形表示的对象允许用户交互使用java2d绘制图形可更换图形界面的风格swing轻量级组件纯更稳定swing结构objectcomponentjframecontainerwindowframedialogjdialogjtextjcomboboxjlabeljlistjmenubarjoptionpanejpaneljscrollbarabstractbuttonjtogglebuttonjmenuitemjbuttonjcheckboxjradiobuttonjcomponentjmenujavaxswing常见容器jframejframejscrollpanejscrollpanejpaneljpanelswing容器组件容器组件的理解jframejdialogjwindowjapplet都是底层容器同时为重量级容器用来显示其他容器或组件jpanel为上层容器轻量级容器一般用来放置其他功能组件在使用的时候我们一般得到底层容器的contentpane然后将上层容器加入其中常见功能组件标签文本域复选框单选按钮文本区按钮用于在swing程序中创建窗口包含边框标题和用于关闭和图标化窗口的按jframejframe的常用方法jframejframestringtitlevoidaddcomponentcompvoidsetvisiblevoidsetsizeintwidthintheightdimensiongetsizevoidsettitlestringnamejframe用于将较小的轻量级组件组合在一起与内容窗格相似面板在默认情况下不透明不包含边框标题和用于关闭和图标化窗口的按钮jpaneljpanel的常用方法jpaneljpanellayoutm

java语言中awt和swing组件的基本用法

java语言中awt和swing组件的基本用法

java语言中awt和swing组件的基本用法Java语言中AWT和Swing组件是用于创建图形用户界面(GUI)的工具。

AWT(Abstract Window Toolkit)是Java最早提供的GUI工具包,而Swing是在AWT基础上进行了扩展和改进的高级GUI工具包。

本文将介绍AWT和Swing组件的基本用法。

一、AWT组件的基本用法AWT组件是Java中最基本的GUI组件,它们在不同的平台上都能够保持一致的外观和行为。

下面是AWT常用组件的基本用法:1. Frame(窗口):使用Frame类可以创建一个基本的窗口。

可以调用setTitle()方法设置窗口标题,setSize()方法设置窗口大小,setVisible()方法显示窗口。

例如:```javaFrame frame = new Frame("My Window");frame.setSize(400, 300);frame.setVisible(true);```2. Panel(面板):Panel是一个容器,用于存放其他组件。

可以使用add()方法将其他组件添加到Panel中。

例如:```javaPanel panel = new Panel();Button button = new Button("Click Me");panel.add(button);```3. Button(按钮):Button用于触发特定的动作。

可以使用addActionListener()方法为按钮添加动作监听器。

例如:```javaButton button = new Button("Click Me");button.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {System.out.println("Button Clicked");}});```4. Label(标签):Label用于显示文本信息。

JAVASWING布局管理器实例之GRIDBAGLAYOUT,实现左右选择框

JAVASWING布局管理器实例之GRIDBAGLAYOUT,实现左右选择框

说来惭愧,使用Swing快2年了,一直没有深入研究Swing中著名的布局管理器GridBagLayout,说他著名是因为他布局灵活,可以适用各种复杂的布局要求,当然也因为他是著名的复杂,这次由于过几天一次重要的面试,“迫使”我不得不好好研究一下(哈哈,其前太懒了,以后一定多注意。

先来分享一下我的学习成果,对一些重要参数进行说明:1. gridx,gridy 设置组件的位置:其实就是组件行列的设置,注意都是从0开始的,比如 gridx=0,gridy=1时放在0行1列。

2.gridwidth,gridheight—设置组件跨越的行列,默认值为1;GridBagConstraints.REMAINDER常量,代表此组件为此行或此列的最后一个组件,会占据所有剩余的空间。

3. weightx,weighty——用来设置窗口变大时,各组件跟着变大的比例。

比如组件A的weightx=0.5,组件B的weightx=1,那么窗口X轴变大时剩余的空间就会以1:2的比例分配给组件A和B.4.anchor —当组件空间大于组件本身时,要将组件置于何处。

有CENTER (默认值)、NORTH、NORTHEAST、EAST、SOUTHEAST、WEST、NORTHWEST选择。

5.insets ——设置组件之间彼此的间距。

它有四个参数,分别是上,左,下,右,默认为(0,0,0,0)。

好了,先看一下左右选择框的实现吧:import java.awt.Dimension;import java.awt.GridBagConstraints;import java.awt.GridBagLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.BorderFactory;import javax.swing.DefaultListModel;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JList;import javax.swing.JPanel;import javax.swing.JTextField;import javax.swing.UIManager;import javax.swing.UnsupportedLookAndFeelException;public class MyFrame extends JFrame {JPanel mainPanel = new JPanel();JButton add = new JButton();JButton left = new JButton();JButton right = new JButton();JLabel label = new JLabel();JTextField field = new JTextField();DefaultListModel leftModel = new DefaultListModel(); DefaultListModel rightMOdel = new DefaultListModel(); JList leftList = new JList(leftModel);JList rightList = new JList(rightMOdel);JPanel left_Right_Panel = new JPanel();public MyFrame() {this.setTitle("test");this.setPreferredSize(new Dimension(600, 400)); this.initComponent();this.addData();this.setVisible(true);this.pack();}/*** 初始化组件*/private void initComponent() {label.setText("添加选项:");add.setText("添加");leftList.setPreferredSize(new Dimension(150, 150));rightList.setPreferredSize(leftList.getPreferredSize());left.setText("左");right.setText("右");mainPanel.setBorder(BorderFactory.createTitledBorder("左右选择框"));mainPanel.setLayout(new GridBagLayout());GridBagConstraints c = new GridBagConstraints();c.gridx = 0; // 0行0列c.gridy = 0;c.gridwidth = 1;c.gridheight = 1;c.fill = GridBagConstraints.HORIZONTAL;c.weightx = 0;c.weighty = 0;mainPanel.add(label, c);c.gridx++;c.weightx = 1;mainPanel.add(field, c);c.gridx++;c.weightx = 0;c.gridwidth = 1;c.gridheight = 1;// c.fill = GridBagConstraints.HORIZONTAL;mainPanel.add(add, c);c.gridx = 0;c.gridy = 1;c.weightx = 1;c.weighty = 1;c.gridwidth = 2;c.gridheight = 2;c.fill = GridBagConstraints.BOTH;mainPanel.add(leftList, c);c.gridx = 2;c.gridy = 1;c.gridwidth = 1;c.gridheight = 1;c.weightx = 0;c.weighty = 0.5;c.anchor = GridBagConstraints.SOUTH;c.fill = GridBagConstraints.HORIZONTAL;mainPanel.add(left, c);c.gridx = 2;c.gridy = 2;c.anchor = GridBagConstraints.NORTH;c.fill = GridBagConstraints.HORIZONTAL;mainPanel.add(right, c);c.gridx = 3;c.gridy = 1;c.gridwidth = 1;c.gridheight = 2;c.weightx = 1;c.weighty = 1;c.fill = GridBagConstraints.BOTH;mainPanel.add(rightList, c);this.getContentPane().add(mainPanel);}private void addData() {add.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) { // TODO Auto-generated method stubaddItem();}});left.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) { // TODO Auto-generated method stubleftItem();}});right.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) { // TODO Auto-generated method stubrightItem();}});}/*** 增加项*/private void addItem() {if (field.getText() != null&& !field.getText().equals("")) {((DefaultListModel) leftList.getModel()).addElement(field.getText()); field.setText("");}}/*** 左移项*/private void leftItem() {if (rightList.getSelectedIndex() != -1) {Object o = rightList.getSelectedValue();((DefaultListModel)rightList.getModel()).remove(rightList.getSelectedIndex());((DefaultListModel)leftList.getModel()).addElement(o);}}/*** 右移项*/private void rightItem() {if (leftList.getSelectedIndex() != -1) {Object o = leftList.getSelectedValue();((DefaultListModel)leftList.getModel()).remove(leftList.getSelectedIndex());((DefaultListModel)rightList.getModel()).addElement(o);}}public static void main(String args[]) {try {UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (InstantiationException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IllegalAccessException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (UnsupportedLookAndFeelException e) {// TODO Auto-generated catch blocke.printStackTrace();}MyFrame frame = new MyFrame();}}。

13、swing结构与布局管理器(太老了)

13、swing结构与布局管理器(太老了)
18

在框架中显示信息示例




//HelloWorld import javax.swing.*; import java.awt.*; public class HelloWorld{ public static void main(String[] args){ TextFrame frame = new TextFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.show(); } } class TextFrame extends JFrame{ public TextFrame(){ setTitle("HelloWorld"); setSize(WIDTH, HEIGHT); //将panel加入到frame TextPanel panel = new TextPanel(); Container contentPane = getContentPane(); contentPane.add(panel); } public static final int WIDTH = 300; public static final int HEIGHT = 200; } class TextPanel extends JPanel{ public void paintComponent(Graphics g){ super.paintComponent(g);//固定写法,确保超类完成自己的那份工作 g.drawString("Hello, World!", x, y); //显示文本 } public int x = 100; public int y = 100; }

Java Swing概述

Java Swing概述

Java Swing概述Swing具有更丰富而且更加方便的用户界面元素集合,Swing对于底层平台的依赖更少。

在Swing中,开发了一个经过仔细设计的、灵活而强大的GUI工具包。

1 什么是Swing在1995年,Java第一次发布的时候,它包含了一个叫AWT(Abstract Windowing Toolkit)的库,用来构建图形用户界面应用程序。

AWT是一个非常简单的具有有限GUI(Graphics User Interface,即图形用户界面)组件、布局管理器和事件的工具包。

最终不幸是,有些经常使用的组件,如表、树、进度条等都不支持。

对于需要更多组件类型的应用程序来说,用户需要从头开始创建这些组件,造成开发很大的负担。

由于AWT自身的不足,后来于1997年,在JavaOne大会上提出并在1998年发布了JFC(Java Foundation Classes)中包含了一个新GUI组件,即Swing。

Swing将对主机控件的依赖性降至了最低,只为诸如窗口和框架之类的顶层控件使用对等体。

大部分控件(JComponent及其子类)都是使用纯Java代码来模拟的。

这意味着Swing就可以在主机之间很好地进行移植。

Swing组件超越了简单的窗口部件,它体现了正不断出现的设计模式以及一些最佳实践。

采用Swing,不仅仅得到GUI窗口部件的句柄和它所包含的数据,而是定义一个模型去保存数据,定义一个视图去显示数据,定义一个控制器去响应用户输入。

事实上,大部分Swing组件的构建是基于MVC(Model-View-Controller)模式的。

MVC使应用程序开发变得更清晰,更易维护和管理。

但是,Swing无法充分利用硬件GUI加速器和专用主机GUI操作等优势,所以在开发的应用程序上,可能比本地GUI的程序运行速度都慢。

后来,Sun公司花费大量的精力来改进其性能。

除了具有更多的组件、布局管理器和事件之外,Swing还有很多特性使得自己比AWT的功能更加强大。

swing容器布局标准版文档

swing容器布局标准版文档
Layout managers are set in containers using the setLayout(LayoutManager) method in a container.(使用setLayout方法可以为容器设置布局管理 器): 容器对象.setLayout(布局管理器对象)
14
10
第十页,共39页。
Hale Waihona Puke 创建(chuàngjiàn)窗口 (JFrame)
public class TestFrame { public static void main(String[] args) { JFrame frame = new JFrame(“Test Frame”);//创建窗口 frame.setSize(400, 300);//设置窗口大小(dàxiǎo) frame.setLocationRelativeTo(null);//窗口显示在屏幕中间 frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE); frame.setVisible(true);//窗口显示 } }
15
第十五页,共39页。
BorderLayout
BorderLayout是JFrame和JDialog的内容窗格缺省的布 局形式(xíngshì) BorderLayout将把容器最多分成五个区域:东区、西区、 南区、北区、中间区 向一个应用了BorderLayout布局的容器中放组件使用下面 的语句:
21
第二十一页,共39页。
FlowLayout Example
public class ShowFlowLayout extends JFrame { public ShowFlowLayout() { FlowLayout layout = new FlowLayout(FlowLayout.LEFT,10,20); this.setLayout(layout); this.add(new JLabel("First Name"));//标签(biāoqiān) this.add(new JTextField(8));//文本框 this.add(new JLabel("MI")); this.add(new JTextField(1)); this.add(new JLabel("Last Name")); this.add(new JTextField(8)); } public static void main(String[] args) { ShowFlowLayout frame = new ShowFlowLayout(); frame.setTitle("ShowFlowLayout"); frame.setSize(200, 200); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); }
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Swing容器组件
javax.swing 包 javax.swing 包
常见容器
JFrame JFrame
JPanel JPanel
JScrollPane JScrollPane
容器组件的理解
JFrame,JDialog,JWindow,JApplet都是底层容 器,同时为重量级容器,用来显示其他容器或组件
JTextArea 组件用来接受用户输入的多行文本信息 可用来实现滚动条效果 构造函数如下:
JTextArea() JTextArea(int rows, int cols):rows表示行数,cols表示列数 JTextArea(String text):text表示默认文字 JTextArea(String text, int rows, int cols)
AWT 包 含 内 容
SWING
Swing Swing (轻量级组件,纯Java组件) (轻量级组件,纯Java组件) 通过 Javax.swing 包 创建 GUI 创建 GUI
容器 组件 可改变的外观 Java2D图形绘制
包含 Swing 组件 以图形表示的对象允许用户交互 可更换图形界面的风格 使用Java2D绘制图形
AWT
AWT AWT ( 重量级组件) ( 重量级组件) 容器 组件 布局管理器 图形和绘制方法 字体 事件 通过 java.awt 包 创建 GUI 创建 GUI
包含 AWT 容器组件 以图形表示的对象允许用户交互 定义 GUI 组件的位置 使用 AWT 图形方法相对于窗口绘制图形 创建并构造用于选择新字体的对象 用于用户和系统交互
BorderLayout
North 上边的组件
左 West 边 的 组 件 CENTER
右 边 的 组 件 East
容器
下边的组件 South
BorderLayout
方法 BorderLayout() setHgap(int hgap) setVgap(int vgap)
说明 创建新的BorderLayout,组件之间没有间距 将组件间的水平间距设置为指定的值 将组件间的垂直间距设置为指定的值
JPanel
JLabel
Swing的JLabel(标签)组件用来实现显示文字或图片的功能 JLabel类允许用图标,字符串或两者同时构造一个标签 构造函数如下:
JLable() JLable(Icon icon):icon表示使用的图标 JLable(Icon icon, int Alignment): Alignment表示排列方式 JLable(String text):text表示使用的字符 JLable(String text, int Alignment) JLable(String text, Icon icon,int Alignment)
Swing 包 含 内 容
Swing的优势
轻量级组件 可改变外观 MVC的程序设计思想 运行更稳定
Swing结构
Object
Component Container JText JComboBox JLabel JList JMenuBar Window Frame JFrame Dialog JScrollBar JDialog AbstractButton JToggleButton JCheckBox JRadioButton JMenuItem JMenu JButPanel
依次排序的组件
右下角 垂直或水平间距 容器
FlowLayout
方法 FlowLayout() setAlignment(int align) setHgap(int hgap) setVgap(int vgap)
说明 构造新的中间对齐的FlowLayout, 将垂直和水平间距保留为5个像素 align为对齐方式FlowLayout.CENTER 设置指定布局的水平间距 设置指定布局的垂直间距
GridLayout
方法 GridLayout() setHgap(int hgap) setVgap(int vgap)
说明 创建新的GridLayout,组件之间没有间距 将组件间的水平间距设置为指定的值 将组件间的垂直间距设置为指定的值
总结
Java的GUI技术:SWING,AWT 理解Swing及与AWT的区别 swing结构 swing控件(JLabel,JButton,JTestFild,JTextArea) 布局管理器(FlowLayout,BorderLayout,GridLayout)
JPanel为上层容器,轻量级容器,一般用来放置其他 功能组件 在使用的时候我们一般得到底层容器的 ContentPane,然后将上层容器加入其中
常见功能组件
文本域 标签 复选框 单选按钮 文本区
按钮
JFrame
1. 最底层容器组件 2. 扩展java.awt.Frame类 3. 用于在Swing程序中创 建窗口 4. 包含边框,标题和用于 关闭和图标化窗口的按 钮 JFrame的常用方法 JFrame() JFrame(String title) void setVisible() void setSize(int width, int height) Dimension getSize() void add(Component comp) void setTitle(String name)

JFrame
JPanel
1. 中间层容器组件 2. 用于将较小的轻量级组件组合 在一起 3. 与内容窗格相似,面板在默认 情况下不透明 4. 不包含边框,标题和用于关闭 和图标化窗口的按钮
JPanel的常用方法 JPanel() JPanel(LayoutManager layout) void add(Component comp) void setLayout(LayoutManager layout)
Swing(一)
课程目标
理解Java的图形化编程方式 掌握Swing的各种编程方法 掌握Swing的常用组件 掌握事件处理及监听者模式 使用Swing设计工程界面
本课目标
了解Java的GUI技术:AWT,SWING 理解Swing与AWT的区别 了解swing结构 容器(JFrame,JPanel) 控件(JButton,JTextFild) 布局管理器(FlowLayout,BorderLayout,GridLayout)
布局管理器
用户界面上的屏幕组件可以按照一定的格式布局
例如水平排列,或按网格方式排列
布局管理器类是一组类
实现youtManager接口 帮助在容器中放置组件
常用布局如下
BorderLayout FlowLayout GridLayout
FlowLayout
左上角 流布局是面板的默认布局管理器
了解(Java)GUI
Graphics User Interface 图形用户界面(GUI) JAVA1.0中使用抽象窗口工具箱( AWT )构建GUI 在JAVA2.0中,SUN公司推出了新的用户界面库:SWING相对AWT 来说,SWING功能更强大,使用更方便 SWING并没有代替AWT,SWING只是AWT的子类,它的使用依赖于 AWT
JLabel
JButton
Swing的按钮相对于AWT中Button类提供了更多的功能 JButton类允许用图标,字符串或两者同时构造一个按钮 构造函数如下:
JButton() JButton(Icon icon):icon表示使用的图标 JButton(String text):text表示使用的字符 JButton(String text, Icon icon)
JButton
JTextField
JTextField 组件允许输入或编辑单行文本 构造函数如下:
JTextField() JTextField(int size):size表示默认大小 JTextField(String text):text表示默认文字
JTextField
JTextArea
相关文档
最新文档