java_swing_入门教程
- 格式:doc
- 大小:126.50 KB
- 文档页数:40
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程序的主要步骤好的,要使用 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组...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事件)。
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 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实现数据显示的逻辑
要使用Java Swing来实现数据显示的逻辑,可以按照以下步骤进行:
1. 创建一个继承自JFrame的主窗口类,作为应用的主界面。
2. 在主窗口类中添加一个JTable组件,用来显示数据。
3. 创建一个继承自AbstractTableModel的数据模型类,用来管理表格中的数据。
4. 在数据模型类中实现必要的方法,如获取表格的行数、列数、单元格数值等。
5. 在主窗口类中实例化数据模型类,并将其设置给JTable组件。
6. 从数据源获取数据,并通过数据模型类的方法添加到表格中。
7. 可以添加其他的Swing组件,如按钮、文本框等,来实现数据的添加、删除、修改等操作。
8. 实现相应的事件监听器,以响应用户的操作。
例如,点击按钮时,执行相应的添加、删除、修改数据的操作。
9. 使用布局管理器来控制组件的布局。
可以选择合适的布局管理器来满足UI设计的需求。
10. 最后,调用setVisible(true)方法将主窗口显示出来。
这样,就可以使用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类是最简单的布局管理器。
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疯狂代码 /。
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,并让应用程序可以运行。