java_swing_入门教程

合集下载

javaswing jlist组件的基本用法

javaswing jlist组件的基本用法

javaswing jlist组件的基本用法JList是JavaSwing库中的一个组件,它用于显示一个列表的数据。

在JavaSwing中,JList允许用户选择列表中的项目。

以下是如何使用JList组件的基本步骤:一、引入必要的库在开始使用JList之前,我们需要引入必要的库。

首先,需要引入JavaSwing库。

可以在项目中直接添加JavaSwing库,或者通过Maven等构建工具添加。

```javaimportjavax.swing.*;```二、创建JList对象创建一个JList对象,需要指定要显示的数据源。

数据源可以是数组、列表或其他集合。

```javaJList<String>list=newJList<>(newString[]{"Item1","Item2","Item3"});```三、设置列表样式可以使用多种方式来设置列表样式,例如背景颜色、字体等。

可以使用以下方法来设置列表样式:```javalist.setBackground(Color.WHITE);//设置背景颜色为白色list.setFont(newFont("Arial",Font.BOLD,14));//设置字体为粗体,大小为14```四、添加到容器中可以将JList对象添加到JFrame、JPanel等容器中,以便将其显示出来。

可以使用以下代码将JList对象添加到容器中:```javaJFrameframe=newJFrame("JListExample");frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.add(newJScrollPane(list));//将JList对象添加到滚动面板中,以便查看大列表frame.pack();frame.setVisible(true);```五、使用addListSelectionListener监听器监听列表选择事件可以使用addListSelectionListener方法来监听列表选择事件。

编写swing程序的主要步骤

编写swing程序的主要步骤

编写swing程序的主要步骤好的,要使用 Java Swing 编写图形用户界面 (GUI) 应用程序,可以按照以下主要步骤进行操作:1. 设计用户界面:首先,需要使用 Swing 组件设计应用程序的用户界面。

这可以通过使用 Java 的可视化设计工具,如 NetBeans IDE 或 Eclipse IDE 中的 Swing 设计器来完成。

这些工具提供了一个图形化界面,可以通过拖放和调整组件的大小和位置来创建用户界面。

2. 创建组件:在设计用户界面后,可以使用 Java 代码创建这些组件。

这可以通过扩展 Swing 类并创建组件对象来完成。

例如,可以扩展 JFrame 类创建一个窗口,扩展JTextField 类创建一个文本框,扩展 JButton 类创建一个按钮等。

3. 设置组件属性:创建组件后,可以使用 Java 代码设置它们的属性,例如文本、颜色、大小、位置等。

这可以通过调用组件的相应方法来完成。

4. 添加事件监听器:为了使应用程序对用户的交互做出反应,需要为组件添加事件监听器。

例如,如果需要在按钮被点击时执行某个操作,可以为按钮添加一个ActionListener。

5. 组织组件层次结构:在 Swing 中,组件是按照层次结构组织的。

父组件可以包含子组件,子组件可以包含孙子组件等。

需要确保组件的层次结构正确,以便正确显示和处理事件。

6. 创建窗口:最后,需要创建一个包含所有组件的窗口。

这可以通过创建一个 JFrame 对象并将其设置为可见来完成。

7. 运行应用程序:完成应用程序的编写后,可以使用 Java 编译器将其编译为可执行文件,并在 Java 虚拟机上运行。

这是使用 Java Swing 编写应用程序的基本步骤。

需要注意的是,Swing 是一个庞大而复杂的 API,需要花费时间和精力来学习和掌握。

跟我学JavaSwingGUI组...

跟我学JavaSwingGUI组...

跟我学JavaSwingGUI组...1.1跟我学Java Swing GUI组件技术及应⽤实例——Java Swing 组件技术中的通⽤对话框编程应⽤实例1.1.1Java Swing通⽤对话框的编程实现1、实现⽂件打开或保存JFileChooser 类(l)实现选择⽂件或者保存⽂件的对话框JFileChooser类它与FileDialog类有差别(FileDialog类是AWT中的,⽽JFileChooser类是Swing中的),通过调⽤showOpenDialog⽅法实现打开⽂件,⽽通过调⽤showSaveDialog⽅法则实现保存⽂件。

(2)JFileChooser类的构造⽅法(3)体现JFileChooser类的使⽤⽅法的⽰例代码如下JFileChooser chooser = new JFileChooser();chooser.setDialogTitle("将您的⽂件改名保存");chooser.setCurrentDirectory(new File(".\\"));chooser.setApproveButtonToolTipText("点击该按钮将保存您的⽂件");/** 采⽤showOpenDialog(this)将显⽰出⽂件打开⽅式*/int returnVal1 = chooser.showSaveDialog(this);if(returnVal1 == JFileChooser.APPROVE_OPTION) { //识别是否按下"OK" //获得⽤户所选择的⽂件路径与⽂件名textBox.append(chooser.getSelectedFile().getAbsolutePath());}(4)⽰例程序代码执⾏的效果2、JColorChooser 颜⾊选择对话框(l)实现颜⾊选择对话框JColorChooser类(2)JColorChooser类的构造⽅法(3)showDialog⽅法的功能及定义(4)体现JColorChooser类的应⽤的⽰例代码JColorChooser chooserColor = new JColorChooser();Color userSelectColor= chooserColor.showDialog(this,"Color Select Dialog",Color.red);if(userSelectColor !=null){this.setBackground(userSelectColor);}(5)⽰例程序代码执⾏的效果(6)如何将JColorChooser置于某个容器中此时应该创建出JColorChooser类的对象并使⽤ColorSelectionModel接⼝来管理⽤户所选择的颜⾊(利⽤JColorChooser类中的getSelectionModel()得到ColorSelectionModel接⼝类的对象,并添加ActionListener事件)。

java_swing_入门教程

java_swing_入门教程

Swing 甚至走得更远一步,在基本的UI 原则之上又放上了一个公共的设计模式。

这个设计模式叫做模型-视图-控制器(Model-View-Controller,MVC),它试图“把角色分开”。

MVC 让负责显示的代码、处理数据的代码、对交互进行响应并驱动变化的代码彼此分离。

JComponentSwing 的整个可视组件库的基础构造块是JComponent。

它是所有组件的父类。

它是一个抽象类,所以不能创建JComponent,但是作为类层次结构的结果,从字面意义来说它包含了数百个函数,Swing 中的每个组件都可以使用这些函数。

显然,有些概念要比其他概念重要,所以对于本教程,需要学习的重要的东西是:∙JComponent 不仅是Swing 组件的基类,还是定制组件的基类(有关的更多信息在“中级Swing”教程中)。

∙它为所有组件提供了绘制的基础架构——一些方便进行组件定制的东西(同样,在“中级Swing”中,有关于这个主题的更多信息)。

∙它知道如何处理所有的键盘按键。

所以类只需要侦听特定的键。

∙它包含add() 方法,可以添加其他JComponent。

换种方式来看,可以把任意Swing 组件添加到其他任何Swing 组件,从而构造嵌套组件(例如,JPanel 包含JButton,甚至包含一些古怪的组合,例如JMenu 包含JButton)。

简单的swing小部件Swing 库中最基础的组件是JLabel。

它所做的正是您所期望的:呆在那儿,看起来很漂亮,描述其他组件。

下图显示了的JLabel 实际应用:JLabel不太吸引人,但是仍然有用。

实际上,在整个应用程序中,不仅把JLabel 用作文本描述,还将它用作图片描述。

每当在Swing 应用程序中看到图片的时候,它就有可能是JLabel。

JLabel 对于Swing 初学者来说没有许多意料之外的方法。

基本的方法包括设置文本、图片、对齐以及标签描述的其他组件:∙get/setText():获取/设置标签的文本。

JavaSwing中嵌入JavaFX入门-Netbeans

JavaSwing中嵌入JavaFX入门-Netbeans

JavaSwing中嵌入JavaFX入门-Netbeans 1安装JDK1.6.0_31和JavaF某2.0SDK到192.168.1.82(用户名:adminitrator密码:111111)中的bak目录下拷贝,如下图所示。

一切采用默认下去就可以了。

注意:没有安装IDE的安装IDE(bak目录有,任何版本都行)。

JavaF某2.0需要JDK1.6以上。

2Swing中嵌入JavaF某应用开发2.1创建java应用程序工程选择“文件”------>“新建项目”,选择点下一步。

项目名称命名为“JavaF某EmbedInSwing”,指定“项目位置选”,创建主类“con.javaf某.in.wing.JavaF某EmbedInSwing”,点击完成。

初始的项目如下图。

2.2导入JavaF某库文件包在项目目录下建一个名称为“lib”的子目录。

然后把“JavaF某2.0SDK”安装目录下(我安装到了“C:\\ProgramFile\\JavaF某\\javaf某-dk2.1”下)的“rt”子目录中的“bin”和lib复制到刚刚创建的“lib”目录下。

项目目录:JavaF某2.0SDK目录:然后再项目树下的“库”上右键,选择“添加JAR/文件夹”。

从文件选择器中选择,刚刚复制到“lib”下的两个文件夹中的“lib”文件夹中的“jf某rt.jar”。

点击“打开”。

完成后,“库”下多了一个子节点“jf某rt.jar”,JavaF某库文件导入完毕。

如下图所示:2.3创建主窗体Java应用程序中,“publictaticvoidmain(String[]arg)”是指定的启动接口。

也就是是说java应用程序启动时首先走main方法。

在main方法中创建JFrame这个Swing的顶层容器用来存放各种Swing组件,代码如下:运行效果为:2.4创建JF某Panel并将其加入到Swing窗口中创建完JF某Panel,设置JF某Panel的内容的时侯,由于其使用的是JavaF某应用程序线程(即:“JavaF某applicationthread”)创建的,需要调用javaf某.application.Platform.runLater(Runnabler)方法,来协调其与Swing和AWT事件分发线(即:SwingandAWTEventDipatchThread(EDT))程,避免冲突。

javaswing实现数据显示的逻辑

javaswing实现数据显示的逻辑

javaswing实现数据显示的逻辑
要使用Java Swing来实现数据显示的逻辑,可以按照以下步骤进行:
1. 创建一个继承自JFrame的主窗口类,作为应用的主界面。

2. 在主窗口类中添加一个JTable组件,用来显示数据。

3. 创建一个继承自AbstractTableModel的数据模型类,用来管理表格中的数据。

4. 在数据模型类中实现必要的方法,如获取表格的行数、列数、单元格数值等。

5. 在主窗口类中实例化数据模型类,并将其设置给JTable组件。

6. 从数据源获取数据,并通过数据模型类的方法添加到表格中。

7. 可以添加其他的Swing组件,如按钮、文本框等,来实现数据的添加、删除、修改等操作。

8. 实现相应的事件监听器,以响应用户的操作。

例如,点击按钮时,执行相应的添加、删除、修改数据的操作。

9. 使用布局管理器来控制组件的布局。

可以选择合适的布局管理器来满足UI设计的需求。

10. 最后,调用setVisible(true)方法将主窗口显示出来。

这样,就可以使用Java Swing实现数据显示的逻辑了。

根据具体的需求和情况,可以根据以上步骤进行适当的修改和扩展。

Java第06章--1(AWT与Swing)

Java第06章--1(AWT与Swing)

• • 视图(view):它专门负责组件的绘制工作,主要涉及 paint()方法。MVC设计范式的最大优点是一个模型可以 有多个视图,每个视图是一个不同侧面但内容却是完整的。 • 一个模型的几个视图都是从不同侧面、用完整的内容来描 述同一个模型。当模型的控制器要修改其内容时,均会通 知这每个视图,它们都会自动地更新自己的视图显示。 • • 控制器(controller):专门负责管理和处理组件所接 收到的事件,这些事件可能来自用户的操作。如键盘输入、 鼠标点击和拖放等,也可能来自系统,如系统计时器发出 的事件。 • 视图和其控制器之间的通信不仅频繁且非常复杂,因此 JFC系统把两者封装成一个整体。
• • 模型(model):模型负责获取和管理组件的状态,用户若 需要询问组件的状态时,实际上是询问该组件的模型。 • 若要询问Swing型按钮组件(JButton 类的一个对象)的状 态,可调用JButton 类的父类javax.swing.AbstractButton所 提供的isSelected()方法,它定义为: – public boolean isSelected() { ... } – 该方法返回一个逻辑值,若为true则该按钮组件被压下,反 之返回false则按钮是松开状态。 • javax.swing包中的各种组件,对于描述该组件状态和内容的 模 型 都 是 用 以 Model 结 尾 的 接 口 实 现 , 例 如 , 对 于 按 钮 在 javax.swing包中有一个如下定义的接口: – public interface ButtonModel extends ItemSelectable { ... } • 每个JButton类的对象都保存着一个表示该按钮组件模型的对 象,调用其父类AbstractButton的方法就可以得到它,即: – JButton b = new JButton( "确定" );

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类是最简单的布局管理器。

第9章Java Swing图形用户界面-Java面向对象程序设计教程-微课视频-程杰-清华大学出版社

第9章Java Swing图形用户界面-Java面向对象程序设计教程-微课视频-程杰-清华大学出版社
第9章Java Swing图形用户界面
9.1 Java Swing概述 9.2 JFrame窗口 9.3布局管理器 9.4 常用控件 9.5事件处理机制 9.6 JDialog对话框 9.7 应用实例:打地鼠小游戏
通过GUI(Graphic User Interface,图形用户界 面),用户与程序之间可以方便地进行交互。Java 的java.awt包,即Java抽象窗口工具包(Abstract Window Toolkit,AWT)提供了许多用来设计GUI 的组件类。Java早起进行用户界面设计时,主要使 用java.awt包提供的类,如Button(按钮)、 TextField(文本框)和List(列表)等。JDK1.2 推出后,增加了一个新的javax.swing包,该包提 供了功能更为强大的用来设计GUI的类。
Javax.swing包提供了Box类,该类也是Container
类的一个子类,创建的容器称为一个盒式容器,盒 式容器的默认布局是盒式布局,而且不允许更改盒 式容器的布局。因此,在策划程序的布局时,可以 利用容器的嵌套,将摸个容器嵌入几个盒式ng中提供了一个更加强大的布 局——弹簧布局SpringLayout。利用该布局管理器
管理组件,当改变窗体的大小时,能够在不改变组 件间相对位置的前提下自动调整组件的大小。
9.4.1 标签JLable 9.4.2 文本框JTextField 9.4.3 按钮JButton 9.4.4 菜单JMenu 9.4.5文本区JTextArea 9.4.6下拉列表JList 9.4.7表格JTable 9.4.8 树JTree
Public void keyTyped(KeyEvent),键盘按键被输入 事件。
无论用户界面设计的如何美观别致,最重要的一点 是知道这些组件能做什么,如单击一个“打开文件” 按钮,我们希望打开的是文件对话框,而不希望程 序没有任何响应。Java提供了事件模型,使Swing

SWING教程

SWING教程

javaswing教程:JAVA教程 第 7讲 Swing用户界面设计疯狂代码 / ĵ:http://Java/Article51917.htmlD X j`/^@7.1 Swing介绍JAVA中文站社区门户 G2m2`wx1BV&A!]v;?-DB7.1.1 介绍Len}w$tJAVA中文站社区门户:w8|@}#T7J2J 第 5讲中我们学习了AWTAWT是Swing基础Swing产生主要原因就是AWT不能满足图形化用户界面发展需要os7Wg5X7C)OAWT设计初衷是支持开发小应用简单用户界面例如AWT缺少剪贴板、打印支持、键盘导航等特性而且原来AWT甚至不包括弹出式菜单或滚动窗格等基本元素B-Jq#t} }~%Py,wJAVA中文站社区门户;Q*}~VP.F\F~S 此外AWT还存在着严重缺陷人们使AWT适应基于继承、具有很大伸缩性事件模型基于同位体体系结构也成为其致命弱点JAVA中文站社区门户%SEm0uKvXv;yTu*R/Mp 随着发展需要Swing出现了Swing组件几乎都是轻量组件和重量组件相比没有本地对等组件不像重量组件要在它们自己本地不透明窗体中绘制轻量组件在它们重量组件窗口中绘制JAVA中文站社区门户h3r z/I,]:O`JAVA中文站社区门户o*pDnO 这讲我们讲下基本Swing组件使用思路方法和使用Swing组件创建用户界面初步思路方法w]'~5L#d7^4aJ\~X Bh^?sh)so Swing是由100%纯Java实现Swing组件是用Java实现轻量级( light-weight)组件没有本地代码不依赖操作系统支持这是它和AWT组件最大区别由于AWT组件通过和具体平台相关对等类(Peer)实现因此Swing比AWT组件具有更强实用性Swing在区别平台上表现致并且有能力提供本地窗口系统不支持其它特性+l}'Cyc7R.a{0U`Vl1Pw Swing采用了种MVC设计范式即"模型-视图-控制"(Model-View-Controller)其中模型用来保存内容视图用来显示内容控制器用来控制用户输入^lv1n+g[H&{JAVA中文站社区门户TvP,s'u2qRh Swing外观感觉采用可插入外观感觉(Pluggable Look and FeelPL&F)5rw'ett{4KP~i[p o 在AWT组件中由于控制组件外观对等类和具体平台相关使得AWT组件总是只有和本机相关外观Swing使得在个平台上运行时能够有区别外观用户可以选择自己习惯外观以下 3幅图是在同个操作系统下得到区别外观&j\-y'U6s.Y5jb`?~&WuCI xEMetal风格 JAVA中文站社区门户6~1A7z't-v5v rJAVA中文站社区门户#\%f7uXijcJAVA中文站社区门户N([eLiOMot风格JAVA中文站社区门户`r|.O7ENMO c6KfZ!Z8s S}/ZaLoo2k;Z$V:QWindows风格JAVA中文站社区门户Qmt2eL H,^n2g1ODzT[7.1.2 Swing类层次结构'Z5@D8wJ`JAVA中文站社区门户0V&?[#n*w"MQ 在javax.swing包中定义了两种类型组件:顶层容器(JFrameJAppletJDialog和JWindow)和轻量级组件Swing组件都是AWTContainer类直接子类和间接子类JAVA中文站社区门户%q*{0rxy-n_Q"S#Q5F M[9E-kz(oc ponentJAVA中文站社区门户 Q(ZQ$XWZL-{ -java.awt.Container{,cH8J}gK+X| -java.awt.WindowMG)tdZ ?fd -java.awt.Frame-javax.swing.JFrame`&|h t([e@ -javax.Dialog-javax.swing.JDialogG6utgX.y-M -javax.swing.JWindowJAVA中文站社区门户Ghm7nu+}-Yfec -java.awt.Applet-javax.swing.JAppletJAVA中文站社区门户6s.~W YGE2q -javax.swing.BoxQ-SEy)V*xw -javax.swing.JcomponetqwF$Bw]4iTL L(p`BbX(O Swing包是JFC(Java Foundation Classes)部分由许多包组成如下表:DJV8Y3b.S{JAVA中文站社区门户H3aB1i*[-VJAVA中文站社区门户[i9M,JTA[[,bJAVA中文站社区门户h!g)t'LL 包 描述 JAVA中文站社区门户e&mKCf:H8gx Com.sum.swing.plaf.mot 用户界面代表类它们实现Mot界面样式 JAVA中文站社区门户,e2eH B3k6VYbCom.sum.java.swing.plaf.windows 用户界面代表类它们实现Windows界面样式 JAVA中文站社区门户K |2w*zbL Javax.swing Swing组件和使用工具4o D?!ia Javax.swing.border Swing轻量组件边框 JAVA中文站社区门户]ilE KG Javax.swing.colorchooser JcolorChooser支持类/接口yN5a t@H8\?+I Javax.swing.event 事件和侦听器类X%y-W `'z/Pn(@i'Lc Javax.swing.filechooser JFileChooser支持类/接口'{EK&HO3@*XT#Z[ Javax.swing.pending 未完全实现Swing组件5X)@!Ck4` Javax.swing.plaf 抽象类定义UI代表行为 JAVA中文站社区门户2e,R@2qRh e Javax.swing.plaf.basic 实现所有标准界面样式公共功能基类 JAVA中文站社区门户 ["Cyt)^(a Javax.swing.plaf.metal 用户界面代表类它们实现Metal界面样式 JAVA中文站社区门户:G0{9J){{CC/Z Javax.swing.table Jtable组件 JAVA中文站社区门户1ZZ*TMY1K8U Javax.swing.text 支持文档显示和编辑 JAVA中文站社区门户cu,e2prO Javax.swing.text.html 支持显示和编辑HTML文档_(W[G5aolJ Javax.swing.text.html.parser Html文档分析器 JAVA中文站社区门户6O8d)D^g,z Javax.swing.text.rtf 支持显示和编辑RTF文件 JAVA中文站社区门户:m?|"A.|4G~.@"Oh Javax.swing.tree Jtree组件支持类\#Ip1j }0| Javax.swing.undo 支持取消操作 JAVA中文站社区门户2} B^6IX7X/M'K/o'hs]:s0Wh)O{KE"x8wJAVA中文站社区门户w8{ [D]0yk (在jdk1.3中第、第 2和pending包没有了增加了plaf.multi包主要功能:给缺省L&F加上附加L&F例如个MultiButtonUI例子可以同时处理MotButtonUI和AudioButtonUI.)JAVA中文站社区门户Jh2W+]+c6f7x Q2P AJAVA中文站社区门户B/H-L-g.] JY swing包是Swing提供最大包它包含将近100个类和25个接口几乎所有Swing组件都在swing包中只有JtableHeader和 JtextComponent是例外它们分别在swing.table和swing.text中JAVA中文站社区门户(ch7PQk1E]0{8dc o swing.border包中定义了事件和事件监听器类和AWTevent包类似它们都包括事件类和监听器接口2\^2Fa3ZNQ swing.pending包包含了没有完全实现Swing组件v%r\W7h9kc7a swing.table包中主要包括了表格组建(JTable)支持类JAVA中文站社区门户!A@0m;q%E0Zk.i swing.tree同样是JTree支持类JAVA中文站社区门户Mc`_'R5u$u swing.text、swing.text.html、swing.text.html.parser和swing.text.rtf都是用于显示和编辑文档包JAVA中文站社区门户\^4D:pm)\a:Z?/BhHs&f7.1.3 Swing组件多样化JAVA中文站社区门户d-Z9{e#_PlX!zJAVA中文站社区门户 b2n)C(Z9b)PL4u Swing是AWT扩展它提供了许多新图形界面组件Swing组件以"J"开头除了有和AWT类似按钮(JButton)、标签(JLabel)、复选框(JCheckBox)、菜单(JMenu)等基本组件外还增加了个丰富高层组件集合如表格(JTable)、树(JTree) JAVA中文站社区门户uto2s1E7.1.4 MVC(Model-View-Control)体系结构JAVA中文站社区门户&k?$fWOJAVA中文站社区门户hkY#e6D7^ Swing胜过AWT主要优势在于MVC体系结构普遍使用在个MVC用户界面中存 3个通讯对象:模型、视图和Control控件模型是指定逻辑表示法视图是模型可视化表示法而Control控件则指定了如何处理用户输入当模型发生改变时它会通知所有依赖它视图视图使用Control控件指定其相应机制JAVA中文站社区门户rIF0\q0ug,[_:K6s`XPA 为了简化组件设计工作在Swing组件中视图和Control控件两部分合为体每个组件有个相关分离模型和它使用界面(包括视图和Control控件)比如按钮JButton有个存储其状态分离模型ButtonModel对象组件模型是自动设置例如般都使用JButton 而不是使用ButtonModel 对象另外通过Model类子类或通过实现适当接口可以为组件建立自己模型把数据模型和组件联系起来用Model( )思路方法JAVA中文站社区门户1O[LKA2S^S AS(J&l MVC是现有编程语言中制作图形用户界面种通用思想其思路是把数据内容本身和显示方式分离开这样就使得数据显示更加灵活多样比如某年级各个班级学生人数是数据则显示方式是多种多样可以采用柱状图显示也可以采用饼图显示也可以采用直接数据输出因此在设计时候就考虑把数据和显示方式分开对于实现多种多样显示是非常有帮助"qO!zv;h:PRGe4[T,~` z#T`.kV){7.1.5 可存取性支持JAVA中文站社区门户[tV`(DJAVA中文站社区门户?"Z;Z,WoIy1t%n\y 所有Swing组件都实现了Accessible接口提供对可存取性支持使得辅助功能如屏幕阅读器能够十分方便从Swing组件中得到信息JAVA中文站社区门户S|`_:cJAVA中文站社区门户,L~:OXp7.1.6 支持键盘操作JAVA中文站社区门户-[a1\lF LI7FRJAVA中文站社区门户0z1Q#r[#r 在Swing组件中使用JComponent类registerKeyboardAction()思路方法能使用户通过键盘操作来替代鼠标驱动GUI上Swing组件相应动作有些类还为键盘操作提供了更便利思路方法JAVA中文站社区门户N Hn:WB'E"T$Vs^JAVA中文站社区门户y#C X;b:X:A 其实这就相当于热键使得用户可以只用键盘进行操作JAVA中文站社区门户N$E$mn};Z!k#Q!sRcq7.1.7 设置边框C#vtJp0f7eUJAVA中文站社区门户9c4kI@'Zr)]v 对Swing组件可以设置个和多个边框Swing中提供了各式各样边框供用户选用也能建立组合边框或自己设计边框种空白边框可以增大组件协助布局管理器对容器中组件进行合理布局C#kf9zb*jG'ay$z v)FVX.V7.1.8 使用图标(Icon)JAVA中文站社区门户9s2`7eHt"F4GJAVA中文站社区门户x!O)O6`-k 和AWT部件区别许多Swing组件如按钮、标签除了使用文字外还可以使用图标修饰自己7O&FF"mCJAVA中文站社区门户"J(Cnl^7e+\例7.1:JAVA中文站社区门户WFyC0KGk import javax.swing.*; //引入Swing包名QB zT*v }y //import com.sun.java.swing.*;o9E&e5S?y,n //使用JDK 1.2 Beta 4版和所有Swing 1.1 Beta 3JAVA中文站社区门户2o'| ^)G7@.c //的前版本,引入Swing包名用此思路方法JAVA中文站社区门户x)L,X[|9qL import java.awt.*;!a(]7` rM(TLg.jdX import java.awt.event.*;JAVA中文站社区门户W1~oeVEX V public SwingApplication {JAVA中文站社区门户.t&?2t5X(`v2l private String labelPrefix = "Number of button clicks: ";K:sOq*n private numClicks = 0; //计数器计算点击次数JAVA中文站社区门户+I5^\'RAd,k public Component createComponents {JAVA中文站社区门户/vL#b-hj%M final JLabel label = JLabel(labelPrefix + "0 ");JAVA中文站社区门户!@PZ0Vg:}_;VE.LJAVA中文站社区门户OaBWv9| JButton button = JButton("I'm a Swing button!");JAVA中文站社区门户Jb6jf8uR'[ button.Mnemonic(KeyEvent.VK_I); //设置按钮热键为'I'6P.f'eI!Pr button.addActionListener( ActionListener {JAVA中文站社区门户R|JGYK"p"t6p public void actionPerformed(ActionEvent e) {JAVA中文站社区门户T.I#z3NqcI;b^*U numClicks;CGx-UbG;Vy8m&c label.Text(labelPrefix + numClicks);JAVA中文站社区门户_ku*GZh#B hfyw ^ //显示按钮被点击次数JAVA中文站社区门户!}4f$J L'_3@^2NB }JAVA中文站社区门户O"I~~2`\7Bq });ZBv*H_nO}KTKQ belFor(button);4{1N8m}'_s@tqjIbst /* 在顶层容器及其内容的间放置空间常用办法是把内容添加到Jpanel上而Jpanel本身没有边框*/!E%wdnp5Le:b2C&kZl)b,G;{/Pr#b JPanel pane = JPanel;JAVA中文站社区门户d+H%bQ(K{ pane.Border(BorderFactory.createEmptyBorder(| l0jX}6jzyzQ 30, //top`9\'Y+@4Ew^A7gjZ 30, //left9m{:ct]Ha 10, //bottom@.y:t_/i6@V 30) //right*Wb F \;qZoP );JAVA中文站社区门户/Fff EuPhqC yout( GridLayout(0, 1)); //单列多行JAVA中文站社区门户j"fd?.B-|mJ pane.add(button);JAVA中文站社区门户I;~E"Y.?D6d"AS { pane.add(label);8\ ~G q7JaS'y5B-Q pane;_~)iNoG8W` }JAVA中文站社区门户9W%o4](IpvLPJAVA中文站社区门户*KdwdDN public void (String args) {JAVA中文站社区门户D2cy(aQ/b\ZP try {[#_ t e!u5E9bgP5i UIManager.LookAndFeel(JAVA中文站社区门户u-]#\0lF'o2G,e T UIManager.getCrossPlatformLookAndFeelClassName);JAVA中文站社区门户Ex/A2sO } //设置窗口风格7|kN~dHE } catch (Exception e) { }W'qD`:e HzJF%yu6wO`x2Ug //创建顶层容器并添加内容.JAVA中文站社区门户oo6Ksibs JFrame frame = JFrame("SwingApplication");t2DhHr$j SwingApplication app = SwingApplication;~|up;aQ+k Component contents = app.createComponents;oSp)wX frame.getContentPane.add(contents, BorderLayout.CENTER);JAVA中文站社区门户?;A R2~N[*Q"\+H&J.IK&uj ` //窗口设置结束开始显示"s1pwFg%n2wP frame.addWindowListener( WindowAdapter {"c%F\F.z+zW //匿名类用于注册监听器JAVA中文站社区门户4bu+NzKH public void windowClosing(WindowEvent e) {-EDQ.zq2w .exit(0);JAVA中文站社区门户wd'J9c.p@H }hI*UO?8N });JAVA中文站社区门户OV#I^\^S9V frame.pack;/r Z)[8Ge7Z1y frame.Visible(true);JAVA中文站社区门户S&ks%|'i;L$[$` y1r x~ }7y3\sMpjrO }aEx2Ly.i ]&C%AWi)I!v:AS4c(e 查看运行结果ye3y-r0O;f"mJAVA中文站社区门户SV;]%}0jN7.1.9 Swing结构介绍"z:tf s;s:kJAVA中文站社区门户jfeUlU Swing设计般可按照下列流程进行:8V@ wkC 1. 引入Swing包muS%eA1n0if |-z 2. 选择"外观和感觉"KB&rk&Q;D6~S'kF0u 3. 设置顶层容器FU!^ rDAS 4. 设置按钮和标签JAVA中文站社区门户_*U)^ yK5[5s 5. 向容器中添加组件l]3N^*e 6. 在组件周围添加边界JAVA中文站社区门户-|z A#GHDa 7. 进行事件处理+mA\alo`%i6SJAVA中文站社区门户Na-kv"c T 例子7.1介绍说明了Swing中设计结构以及最基本组件Button和Label使用方法在中我们建立个Swing风格窗口并在其中添加个按钮中保存个计数器以计算按钮被点击次数并在每次点击的后用个Label显示在这个中我们可以看到Swing组件使用和AWT组件使用基本思路方法致使用事件处理机制也完全相同这些在前面AWT中已经讲过不再赘述TAG: Swing swing 教程 设计 用户界面31/3123>2009-1-12 1:13:34疯狂代码 /。

Java桌面程序开发第5章-使用Swing常用组件

Java桌面程序开发第5章-使用Swing常用组件
教学要求 1.掌握:Swing各种常用组件的使用,包括图形用户界
面所需要的基本组件、选择型组件,菜单等的创建和使用 2.理解:工具栏的创建,对话框的创建和使用
5.1 GUI的基本元素:标签、按钮、文本框
1.JLabel
• JLabel类是一个用来显示文本的类,文本就是一个字符串。在程 序中指定要显示的字符串,但该字符串在运行时不能被用户修改
密码文本框是用来输入密码的文本框。
密码框继承单行文本框,所以密码框只显示单行输入框。 但是,与单行文本框不同的是,密码框输入的文字将不会 正常显示出来,而是使用其它字符代替。
可以通过调用setEchoChar(char c)来更改显示字符。密 码框的作用是防止别人看到所输入的文字信息。
JPasswordField的构造方法:
JCheckBox类继承JToggleButton类,而JToggleButton类 实现一个反选按键,只有按下和释放两种状态。复选框也 有类似功能,只有选择和不选择两种状态,而且复选框可 由多个按钮组成一个组群。
定义它们之间的间隔。 • int getHorizontalAlignment():返回标签内容沿 X 轴的对齐方式。 • int getVerticalAlignment() :返回标签内容沿 Y 轴的对齐方式。 • void setLabelFor(Component c):设置将标签添加到的组件。
区要换行)。
实例
例5-10 使用JTextArea
例5-11 从一个文本区复制选中的文字到另一个文本区
5.3 选择型组件
Java提供了很多的选择型组件,用户可通过单击选定,免 去了输入文本的麻烦。
常用的选项组件有单选框,复选框,列表框,组合列表框 等。

swing教程

swing教程

swing教程Swing是Java的一个图形界面(GUI)工具包,它提供了一组用于创建富客户端应用程序的类和方法。

本教程将带您逐步学习Swing的基本概念和用法。

1. 引入Swing库在开始编写Swing应用程序之前,首先需要在代码中引入Swing库,可以通过添加以下代码实现:```import javax.swing.*;```2. 创建Swing窗口创建一个Swing窗口是使用Swing的第一步。

可以通过以下代码创建一个基本的Swing窗口:```JFrame frame = new JFrame("Swing窗口");frame.setSize(400, 300);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true);```3. 添加组件在Swing窗口中添加各种组件(如按钮、标签、文本框等)是创建功能完善的界面的关键。

可以使用不同的Swing类来创建和定位这些组件,例如JButton、JLabel和JTextField。

以下是添加一个按钮和一个标签的示例:```JButton button = new JButton("点击我");JLabel label = new JLabel("Hello, Swing!");frame.add(button);frame.add(label);```4. 布局管理器布局管理器是用于控制Swing组件在窗口中的位置和大小的工具。

Swing提供了多种布局管理器,例如FlowLayout、BorderLayout和GridLayout。

使用布局管理器可以轻松地创建自适应和响应式的界面。

以下是使用FlowLayout布局管理器的示例:```frame.setLayout(new FlowLayout());```5. 事件处理Swing允许通过添加事件监听器来处理用户的交互。

java swing 中文教程

java swing 中文教程

作者:williamchen译者:Matthew Chen备注:本文是翻译,由于部分文本网上有提供,就直接使用了。

作者的初稿,不是很规范的英文,但是内容值得一读,所以翻译了出来,一系列共有四篇,红字为译者评论。

Overview概述Java GUI toolkits have always been a controversial topic. The same type of debates also happened in other languages such as Smalltalk. In fact there exist such debates on everyplatform-independent language. It is especially prominent in Java because Java is the most dominating language today.Java GUI 工具包一直是一个倍受争议的话题。

同样的争论也发生在其他编程语言如Smalltalk。

实际上每个平台无关的语言都存在着这样的争论。

Java作为当前最受广泛使用的编程语言而尤为突出。

So what’s the controversy? Basically, it is a dispute between people who support emulated components(or widgets, or controls) and those who support native components. There are two camps among Java developers, one of which advocates for emulated components as in Swing, and the other native components as in SWT.这场争论在支持模拟组件(如widgets和control,在下文中也称之为仿造组件)和支持本地组件(在下文中也称之为原生组件)的人们之间展开,于是Java开发者形成了两个不同的阵营,提倡使用模拟组件的Swing,和提倡使用原生组件的SWT。

swing入门教程

swing入门教程

第一步是创建类。将组件放在 JFrame 上的 Swing 应用程序需要继承 JFrame 类,如 下所示: public class HelloWorldextends JFrame 这样做之后,就得到上面描述的所有 JFrame 属性,最重要的是操作系统对窗口的本机 支持。下一步是把组件放在屏幕上。在这个示例中,使用了一个 null 布局。在教程的后 面部分,您将学到更多关于布局和布局管理器的内容。但对于这个示例,可以用数字表 示 JFrame 上的像素位置: public HelloWorld() { super(); this.setSize(300,200); this.getContentPane().setLayout(null); this.add(getJLabel(),null); this.add(getJTextField(),null); this.add(getJButton(),null); this.setTitle("HelloWorld"); }
时,造成按钮单击。 除了这些方法,我还要介绍 JButton 包含的另外一组方法。这些方法利用了按钮的所有 不同状态。状态是对组件进行描述的一个属性,通常采用真/假设置。在 JButton 中,可 以包含以下可能状态:活动/不活动、选中/没选中、鼠标经过/鼠标离开、按下/没按下, 等等。另外,可以组合这些状态,例如按钮可以在鼠标经过的同时被选中。现在您可能 会问自己用这些状态到底要做什么。作为示例,请看看您的浏览器上的后退按钮。请注

JComponent 不仅是 Swing 组件的基类, 还是定制组件的基类(有关的更多信息
在“中级 Swing”教程中) 。

它为所有组件提供了绘制的基础架构 —— 一些方便进行组件定制的东西(同样,

Java Swing教程

Java Swing教程

Java Swing 编程基础与进阶/art/201201/313153.htm1、概述Swing中的JApplet和JFrame/art/200907/136486.htm本文介绍JApplet和JFrame都是只包含一个组件的容器,这个组件是JRootPane的一个实例,所以JApplet和JFrame之间是互相通用的。

这几天,闲时看了一下Swing。

Swing常用的两个类,一个是JFrame窗体类,一个是JApplet小应用程序类。

其中JApplet 依赖浏览器来执行。

很多浏览器都可以支持JApplet,包括了IE,Firefox等。

不过如何用IE6来执行的话,IE6会有脚本警告。

JApplet和JFrame都是只包含一个组件的容器,这个组件是JRootPane的一个实例。

所以JApplet和JFrame之间是互相通用的。

如以下代码:package com.tntxia.test.swing.jApplet;import java.awt.BorderLayout;import java.awt.Container;import java.awt.FlowLayout;import javax.swing.ImageIcon;import javax.swing.JApplet;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.SwingConstants;public class HelloWorld extends JApplet {/****/private static final long serialVersionUID = 52493594634447013L;public void init() {Container contentPane = getContentPane();//原文如不修改,不能正常显示图标//修改后--------.URL codebase=getClass().getResource("loli.jpg");JLabel label = new JLabel(new ImageIcon(codebase));//----------修改后的程序有个毛病,既作为applet使用时,不能刷新,一旦刷新图就没了。

Swing 编程

Swing 编程

Java之Swing编程理解什么是GUI/设计GUI基本界面/理解事件类和接口/学习使用部件按钮,标签,列表,文本框,面板/学会处理鼠标和键盘事件/使用基本的布局管理器。

GUI是由N多的部件构成的,这些部件叫Components, 也叫Gadget(神探加吉特那个词)。

这些部件有JLabel/JTextField/JButton/JCheckBox/JComboxBox/JList/JPanel。

它们构成了界面。

这些部件在屏幕上的排列顺序由LayoutManager负责管理,再加上Menu,Menu Bar 就构成了完整的用户界面。

用户界面只是一个外观。

界面是为了完成和用户的交互任务。

用户可以用Mouse/KeyBoard/甚至是Voice 。

界面取得用户输入事件后传给相应的Listener类对象,由这些特殊的Listener响应事件,这些Listener是一些接口(Interface),接口中有一些必须超越的方法。

事件发生后,这些被超越的方法自动调用以完成交互任务。

9.1Swing概况(1)Swing由纯Java写成,可移植性好,外观在不同平台上相同。

所以Swing部件称为轻量级组件(2)AWT部件和平台紧密相关,各种平台它们的外观不尽相同,所以称重量级组件,通用性差。

注意,某些Swing部件还是重量级的,比如JFrame和JAppletng.object ponent java.awt.container java.swing.JComponentJAVA的GUI部件都是Component,都有paint repaint update方法Container是一个集合,里面放了各种的GUI部件,而我们常用的Contentpane就是一个Container对象请大家注意J2SDK中的Components/container/Jcomponet的方法,这些方法是所有部件共有的。

Swing 部件继承图JComponent的好处1 自定义Look and Feel外观。

Swing基础

Swing基础

Swing基础知识集合一、JFrame窗体窗体是一个组件容器,所有组件都必须有窗体去承载它们。

JFrame窗体类包含一个容器类,所有设置在窗体上的组件实际上都是放置在这个容器类中的。

这个容器作为JFrame类的一个封装属性,通过getContentPane()方法可以获取它。

如:JFrame jf = new JFrame();Container container = if.getContentPane();Swing窗体包含很多层,通常与组件和容器相关联,所以在JFrame对象创建完成后,需要调用getContentPane()方法获取窗体的组件容器,然后在容器中添加组件或设置布局管理器,通常这个容器用来包含和显示组件。

如果需要将组件添加至容器,可以使用来自Container类的add()方法进行设置。

Swing是单线程的,所有与组件绘制有关的操作都必须在单一线程中完成,这个线程就是事件队列线程。

EventQueue类的invokeLater()方法可以将Swing 组件相关操作的线程加入事件队列中,这样可以把界面绘制与业务处理线程分开。

二、常用布局管理器(一)绝对布局使用绝对布局的步骤:(1)使用Container.setLayout(null)方式取消布局管理器(2)使用Component.setBounds()方法来设置每个组件的大小与位置在使用绝对布局之前,需要调用容器的setLayout(null)方法告知编译器这里不再使用布局管理器。

其中,JFrame窗体需要调用getContentPane()方法获取窗体容器,再设置容器的布局方式。

(二)流布局管理器——FlowLayout布局像“流”一样按指定的方向摆放组件,直到占据了这一行的所有空间,然后再向下移动一行。

流布局用于安排有向流中的组件,这非常类似于段落中的文本行。

流的方向取决于容器的componentOrientation 属性,它可能是以下两个值中的一个:∙ComponentOrientation.LEFT_TO_RIGHT∙ComponentOrientation.RIGHT_TO_LEFT流布局一般用来安排面板中的按钮。

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

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

java语言中awt和swing组件的基本用法AWT (Abstract Window Toolkit)是Java编程语言的一套图形用户界面(GUI)组件集,它提供了创建和管理窗口、按钮、标签等图形组件的能力。

AWT组件是依赖于操作系统的本地GUI组件。

下面是使用AWT组件的基本步骤:1.导入AWT相关的类:通常在使用AWT组件之前,需要导入`java.awt`和`java.awt.event`包中的类。

2.创建一个Frame:使用`Frame`类来创建一个顶级窗口。

3.创建其他组件:使用AWT提供的组件类(如`Button`、`Label`等)来创建其他需要的组件。

4.将组件添加到Frame:使用`add()`方法将其他组件添加到Frame中。

5.设置Frame的布局:使用`setLayout()`方法设置Frame的布局方式,如`FlowLayout`、`GridLayout`等。

6.设置Frame的大小和可见性:使用`setSize()`方法设置Frame 的大小,使用`setVisible(true)`方法设置Frame可见。

7.添加事件监听器:使用`addActionListener()`方法为按钮等组件添加事件监听器。

Swing是Java编程语言中提供的一组GUI组件,它是在AWT的基础上进行了增强和扩展。

Swing组件是纯Java组件,不依赖于操作系统的本地组件,因此具有更高的可移植性和灵活性。

下面是使用Swing组件的基本步骤:1.导入Swing相关的类:通常在使用Swing组件之前,需要导入`javax.swing`包中的类。

2.创建一个JFrame:使用`JFrame`类来创建一个顶级窗口。

3.创建其他组件:使用Swing提供的组件类(如`JButton`、`JLabel`等)来创建其他需要的组件。

4.将组件添加到JFrame中:使用`add()`方法将其他组件添加到JFrame中。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

swing入门教程swing简介(2009-04-20 23:52:40)U I组件简介在开始学习Swing之前,必须回答针对真正初学者的一个问题:什么是UI?初学者的答案是“用户界面”。

但是因为本教程的目标是要保证您不再只是个初学者,所以我们需要比这个定义更高级的定义。

所以,我再次提出这个问题:什么是UI?您可能把它定义成您按下的按钮、打字的地址栏、打开和关闭的窗口,等等,这些都是U I 的元素,但是除了在屏幕上看到的这些之外,还有更多都是U I 元素。

比如鼠标、键盘、音量、屏幕颜色、使用的字体,以及一个对象相对于另一个对象的位置,这些都包含在U I 之中。

实际上,在计算机和用户的交互之中扮演角色的任何对象都是U I 的组成部分。

这看起来足够简单,但是您应当惊讶的是,有许多人和大型公司已经为它努力了很多年。

实际上,现在有的大学专业的惟一课程就是研究这种交互。

Swing的角色Swing是Java平台的U I ——它充当处理用户和计算机之间全部交互的软件。

它实际上充当用户和计算机内部之间的中间人。

Swing 到底是如何做这项工作的呢?它提供了处理前面一节中描述的U I 各方面内容的机制:∙键盘:Swing 提供了捕捉用户输入的方法。

∙颜色:Swing 提供改变在屏幕上看到的颜色的方法。

∙打字的地址栏:Swing 提供了文本组件,处理所有普通任务。

音量:Swing 不太擅长。

无论如何,Swing为您提供了创建自己的U I 所需要的所有工具MVCSwing甚至走得更远一步,在基本的U I 原则之上又放上了一个公共的设计模式。

这个设计模式叫做模型-视图-控制器(Model-Vie w-Co ntroller,MVC),它试图“把角色分开”。

MVC 让负责显示的代码、处理数据的代码、对交互进行响应并驱动变化的代码彼此分离。

有点迷惑?如果我为这个设计模式提供一个现实世界的非技术性示例,它就比较容易了。

请想像一次时装秀。

把秀场当成U I,假设服装就是数据,是展示给用户的计算机信息。

现在,假设这次时装秀中只有一个人。

这个人设计服装、修改服装、同时还在T 台上展示这些服装。

这看起来可不是一个构造良好的或有效率的设计。

现在,假设同样的时装秀采用MVC 设计模式。

这次不是一个人做每件事,而是将角色分开。

时装模特(不要与MVC 缩写中的模型混淆)展示服装。

他们扮演的角色是视图。

他们知道展示服装(数据的)适当方法,但是根本不知道如何创建或设计服装。

另一方面,时装设计师充当控制器。

时装设计师对于如何在T 台上走秀没有概念,但他能创建和操纵服装。

时装模特和设计师都能独立地处理服装,但都有自己的专业领域。

这就是MVC 设计模式背后的概念:让U I 的每个方面处理它擅长的工作。

如果您仍然不明白,那么教程后面的示例有望消除您的迷惑——但是在您继续进行的时候,请记住基本的原则:用可视组件显示数据,同时让其他类操纵数据。

JCo mpone ntSwing的整个可视组件库的基础构造块是JCo mpone nt。

它是所有组件的父类。

它是一个抽象类,所以不能创建JCo mpone nt,但是作为类层次结构的结果,从字面意义来说它包含了数百个函数,Swing中的每个组件都可以使用这些函数。

显然,有些概念要比其他概念重要,所以对于本教程,需要学习的重要的东西是:∙JComponent 不仅是Swing 组件的基类,还是定制组件的基类(有关的更多信息在“中级Swing”教程中)。

∙它为所有组件提供了绘制的基础架构——一些方便进行组件定制的东西(同样,在“中级Swing”中,有关于这个主题的更多信息)。

∙它知道如何处理所有的键盘按键。

所以类只需要侦听特定的键。

∙它包含add() 方法,可以添加其他JComponent。

换种方式来看,可以把任意Swing 组件添加到其他任何Swing 组件,从而构造嵌套组件(例如,JPanel 包含JButton,甚至包含一些古怪的组合,例如JMenu 包含JButton)。

简单的swing小部件JLabelSwing库中最基础的组件是JLabel。

它所做的正是您所期望的:呆在那儿,看起来很漂亮,描述其他组件。

下图显示了的JLabel 实际应用:JLabel不太吸引人,但是仍然有用。

实际上,在整个应用程序中,不仅把JLabel 用作文本描述,还将它用作图片描述。

每当在Swing 应用程序中看到图片的时候,它就有可能是JLabel。

JLabel 对于Swing初学者来说没有许多意料之外的方法。

基本的方法包括设置文本、图片、对齐以及标签描述的其他组件:∙get/setText():获取/设置标签的文本。

∙get/seticon():获取/设置标签的图片。

∙get/setHorizontalAlignment():获取/设置文本的水平位置。

∙get/setVerticalAlignment():获取/设置文本的垂直位置。

∙get/setDisplayedMnemonic():获取/设置标签的访问键(下划线文字)。

∙get/setLableFor():获取/设置这个标签附着的组件,所以当用户按下Alt+访问键时,焦点转移到指定的组件。

JButtonSwing中的基本动作组件JButto n,是与每个窗口中都能看到的OK 和Ca ncel 一样的按钮;这些按钮所做的正是您希望它们做的工作——在单击它们之后,将发生一些事情。

到底会发生什么呢?您必须定义发生的内容(请参阅事件,以获得更多信息)。

一个JButto n 实例看起来如下所示:JButto n用来改变JButto n 属性的方法与JLabel 的方法类似(您可能发现,在大多数Swing组件中,这些属性都类似)。

它们控制文本、图片和方向:∙get/setText():获取/设置标签的文本。

∙get/seticon():获取/设置标签的图片。

∙get/setHorizontalAlignment():获取/设置文本的水平位置。

∙get/setVerticalAlignment():获取/设置文本的垂直位置。

∙get/setDisplayedMnemonic():获取/设置访问键(下划线字符),与Alt 按钮组合时,造成按钮单击。

除了这些方法,我还要介绍JButto n 包含的另外一组方法。

这些方法利用了按钮的所有不同状态。

状态是对组件进行描述的一个属性,通常采用真/假设置。

在JButton 中,可以包含以下可能状态:活动/不活动、选中/没选中、鼠标经过/鼠标离开、按下/没按下,等等。

另外,可以组合这些状态,例如按钮可以在鼠标经过的同时被选中。

现在您可能会问自己用这些状态到底要做什么。

作为示例,请看看您的浏览器上的后退按钮。

请注意在鼠标经过它的时候,图片是如何变化的,在按下该按钮时,图片又是如何变化的。

这个按钮利用了不同的状态。

每个状态采用不同的图片,这是提示用户交互正在进行的一种普遍并且有效的方式。

JButton 上的状态方法是:∙get/setDisabledIcon()∙get/setDisableSelectedIcon()∙get/setIcon()∙get/setPressedIcon()∙get/setRolloverIcon()∙get/setRolloverSelectedIcon()∙get/setSelectedIcon()JTextFieldSwing中的基本文本组件是JTe xtField,它允许用户在U I 中输入文本。

我肯定您熟悉文本字段:要掌握本教程,则必须使用一个文本字段输入用户名和口令。

您输入文本、删除文本、选中文本、把文字四处移动—— Swing 替您负责所有这些工作。

作为U I 开发人员,利用JJTextField时,实际上并不需要做什么。

在任何情况下,这是JTextField实际使用时看起来的样子:JTextField在处理JTextField时,只需要关注一个方法——这应当是很明显的,这个方法就是设置文本的方法:get/setText(),用于获取/设置JTextField中的文本。

JFra me迄今为止,我介绍了Swing的三个基本构造块:标签、按钮和文本字段;但是现在需要个地方放它们,希望用户知道如何处理它们。

JFra me类就是做这个的——它是一个容器,允许您把其他组件添加到它里面,把它们组织起来,并把它们呈现给用户。

它有许多其他好处,但是我认为先看看它的图片最简单:JFra meJFra me 实际上不仅仅让您把组件放入其中并呈现给用户。

比起它表面上的简单性,它实际上是Swing包中最复杂的组件。

为了最大程度地简化组件,在独立于操作系统的Swing组件与实际运行这些组件的操作系统之间,JFrame起着桥梁的作用。

JFrame在本机操作系统中是以窗口的形式注册的,这么做之后,就可以得到许多熟悉的操作系统窗口的特性:最小化/最大化、改变大小、移动。

但是对于本教程的目标来说,把JFrame当作放置组件的调色板就足够了。

可以在JFra me上调用的一些修改属性的方法是:∙get/setTitle():获取/设置帧的标题。

∙get/setState():获取/设置帧的最小化、最大化等状态。

∙is/setVisible():获取/设置帧的可视状态,换句话说,是否在屏幕上显示。

∙get/setLocation():获取/设置帧在屏幕上应当出现的位置。

∙get/setsize():获取/设置帧的大小。

∙add():将组件添加到帧中。

简单应用程序就像所有的“x 入门”教程一样,本教程也包含必不可少的HelloWorld演示。

但这个示例不仅对观察Swing应用程序如何工作有用,还对确保设置正确很有用。

一旦使这个简单的应用程序能够成功运行,那么之后的每个示例也将能够运行。

下图显示了完成后的示例:HelloWo rld示例第一步是创建类。

将组件放在JFra me上的Swing应用程序需要继承JFrame类,如下所示:public class HelloWorld extends JFrame这样做之后,就得到上面描述的所有JFra me属性,最重要的是操作系统对窗口的本机支持。

下一步是把组件放在屏幕上。

在这个示例中,使用了一个null 布局。

在教程的后面部分,您将学到更多关于布局和布局管理器的内容。

但对于这个示例,可以用数字表示JFrame 上的像素位置:public HelloWorld(){super();this.setSize(300, 200);this.getContentPane().setLayout(null);this.add(getJLabel(), null);this.add(getJTextField(), null);this.add(getJButton(), null);this.setTitle("HelloWorld");}private javax.swing.JLabel getJLabel() {if(jLabel == null) {jLabel = new javax.swing.JLabel();jLabel.setBounds(34, 49, 53, 18);jLabel.setText("Name:");}return jLabel;}private javax.swing.JTextField getJTextField() { if(jTextField == null) {jTextField = new javax.swing.JTextField(); jTextField.setBounds(96, 49, 160, 20);}return jTextField;}private javax.swing.JButton getJButton() {if(jButton == null) {jButton = new javax.swing.JButton();jButton.setBounds(103, 110, 71, 27);jButton.setText("OK");}return jButton;}现在组件都放在了JFra me上,并且需要在屏幕上显示JFra me,并让应用程序可以运行。

相关文档
最新文档