java swing 组件大全
常用swing组件

JLabel(String text):创建具有指定文本的 标签
JLabel(String text, Icon icon, int horizontalAlignment): 创建具有指定文本、图像和水平对齐方式的标签。
选择框
JList类:创建列表框,用法类似于List类;
JComboBox类:用户可以在下拉列表看到第一个选项和它 旁边的箭头按钮,当用户单击箭头按钮时,将发生 ItemEvent事件; JCheckBox 类:负责创建复选框对象。与Checkbox相比, JCheckBox复选框的名字不仅可以是字符串,还可以是一 个图标; JRadioButton:负责创建单选钮,不过需要将同一组的选 项添加到ButtonGroup对象中。
例7 选择框使用 代码见word文档
文本框
JTextField类:创建单行文本框,功能与TextField类似;
JPasswordField类:创建密码框;为了安全性,用 public char[] getPassword() 来取代getText(); JTextArea类:创建多行文本框,通常放在JScrollPane对象中
中间容器
JPanel类:创建面板,用于容纳其它组件,默认的布局管理 器是FlowLayout。其用法与Panel类似. JScrollPane类:用于创建滚动窗格,我们可以把一个组件 放到该类对象中,然后通过滚动条来观察组件。注意: JTextArea不自带滚动条(这一点与重量组件TextArea不同), 因此,需要把文本区放到一个滚动窗口中。例如: JScorollPane scroll=new JScorollPane(new JTextArea()); 该类用法与ScrollPane类似。 JToolBar类:创建工具栏;setFloatable(boolean b)为 true(默认值)时,可以拖动到容器的四“边”中的何一边 , 也可以拖到单独窗体。 例2 JToolBar 工具栏的使用 。代码见word文档
JavaSwing组件大全实例演示

JavaSwing组件⼤全实例演⽰⼀抛砖引⽟ 本⽂指在利⽤⼀个⼩”Swing 组件⼤全”来引导⼤家学习这门语⾔,熟悉Java Swing的各个组件。
并在学习过程中参考作者这⼀程序的⽅法和思想,最终形成⾃⼰的思维⽅式和学习⽅式。
你能举⼀返三是作者最开⼼的事情。
⼩程序演⽰了Java Swing⼤部分组件。
最后附上了全部代码及详细的注释说明。
希望本⽂能对⼤家学习Java有所帮助。
随着Java风潮席卷国内,学习Java的⽅法和路径越来越多。
⽽在⼤量的书本前,在Java庞⼤的类库前⼤⼤家都有点迷失⽅向的感觉,是学 J2EE,J2ME还是。
然⽽所有的这些都或多或少的离不开J2SE。
万丈⾼楼平地起。
J2SE是整个Java的基础,学好了这个对Java的各个⽅向都是很有利的。
⽽学习J2SE的最初点就在界⾯设计,因为界⾯编程是你来感觉最直接的⼿段,是提⾼⼤家编程兴趣的很好开始,因为你写完程序编译后可马上看到⾃⼰的成果。
⽽不像后台编程做完了都感受不到效果。
⽽好的界⾯也是你测试你其他程序的基础。
界⾯设计!不就是拖拉操作吗?如果是VB,VC等可视化的编程,的确只是⼀些拖拉操作,由于Java语⾔的设计中所有的东西都是程序代码,在 Java中如果想要设计⼀个好的界⾯,可不是简单的拖拉操作能完成的。
即使使⽤了如JBuilder这么强⼤的可视化⼯具,你也得亲⾃动⼿写⼀些界⾯设计代码才能很好的完成你的任务。
如果你能在此基础上理解Java界⾯设计的思想,对你学习这门语⾔将有莫⼤的帮助。
Java界⾯设计主要涉及Awt,Swing两⼤类库,Swing是Awt的扩展和功能加强。
下⾯我们就以Swing为基础来说说整个Java的界⾯设计。
⼆感受效果 在开始之前,让我们看看这篇⽂章要达到的效果,有了⽬标和成果才有学习的兴趣,起码我是这样认为和学习的。
如下图所⽰,这就是我们设计的界⾯,它包括了Swing中⼤部分常⽤的组件。
有些功能界⾯上反映不出来,⼤家可尝试编译源代码点南击各个部分,看看它们的响应事件。
JavaSwing界面设计(所有控件及示例)

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("学生信息管理系统");
java swing常用的9种组件

在Java1.0中,已经有一个用于GUI编程的类库AWT(Abstract Window Toolkit),称之为抽象窗口工具箱。
遗憾的是,AWT中的组件(例如按钮,类名为Button)在实现中使用了本地代码(Native Code),这些组件的创建和行为是由应用程序所在平台上的本地GUI工具来处理的。
因此,AWT组件要在不同的平台上提供给用户一致的行为就受到了很大的限制。
同时,AWT组件中还存在很多bug,这就使得使用AWT来开发跨平台的GUI应用程序困难重重。
1996年,SUN公司和Netsacpe公司在一个称为Swing的项目中合作完善了Netsacpe公司原来开发的一套GUI库,也就是现在所谓的Swing组件。
Swing组件和原来的AWT组件完全不同,最大的区别就是Swing组件的实现中没有使用本地代码,这样对底层平台的依赖型就大为降低,并且可以给不同平台的用户一致的感觉。
此外,和原来的AWT相比,Swing 中提供了内容更多、使用更为方便的组件。
在阅读一些书籍时,常会遇到名词JFC(Java Foundation Class)。
JFC的概念是在1997年的JavaOne开发者大会上首次提出的,是指用于构建GUI的一组API。
实际上,Swing只是JFC的一部分,其它的还有二维图形(Java 2D)API以及拖放(Drag and Drop)API等等。
Swing并不是完全取代了AWT,Swing只是使用更好的GUI组件(如JButton)代替AWT 中相应的GUI组件(如Button),并且增加了一些AWT中原来所没有的GUI组件。
并且,Swing 仍使用AWT 1.1的事件处理模型。
虽然现在AWT组件仍得到支持,但是建议在你的应用程序中尽量使用Swing组件和1.1的事件模型。
1.标签(JLabel)标签(JLabel)通常是用来标识另外一个组件的含义。
以在标签上显示文字、图象或是文字图象的组合。
Swing组件

最底层容器,默认不可见; 最底层容器,默认不可见; 构造函数: 构造函数:
• JFrame( ) • JFrame(String title)
JFrame的关闭 的关闭
• setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
范例: 范例:path: exam\ch5
范例: 范例:
• • • • • exam\ch8\SimpleTable.java exam\ch8\TableModel2.java exam\ch8\ColumnModelTest.java exam\ch8\SelectionModelDemo.java exam\ch8\AddRemoveCells.java
Swing组件的使用 Swing组件的使用
1、使用Swing的基本规则 、使用 的基本规则
组件放入一个顶层Swing容器中 把Swing组件放入一个顶层 组件放入一个顶层 容器中 避免使用非Swing的重量级组件 避免使用非 的重量级组件 不同, 组件不能直接加到顶层Swing 与AWT不同,Swing组件不能直接加到顶层 不同 组件不能直接加到顶层 容器中,它们必须加到一个与Swing顶层容器相 容器中,它们必须加到一个与 顶层容器相 关的内容面板(content pane)上。 关的内容面板 上
可以最大化、最小化、关闭窗口、加入菜单等; 可以最大化、最小化、关闭窗口、加入菜单等; 即不能单独出现; 是lightweight component,即不能单独出现; 即不能单独出现 能利用Look and Feel制定界面感观 能利用 制定界面感观 一般将JInternalFrame假如 假如DesktopPane(Virtual Desktop) 一般将 假如 构造函数: 构造函数:
第11章 Swing组件

11.1 Swing组件介绍
第11章 Swing组件
Swing是AWT的扩展。 这些组件包括与AWT包中类似的按钮 JButton、复选框JCheckBox、标签JLable 、文本框JTextField和JTextArea等,选项板 JComboBox、单选按钮JRadioButton、树 JTree、表格JTable和工具栏JToolBar等。
图11-3 简易计算器
11.3 综合运用实例
问题实现: •该实例中定义MyCalculatorSwing类。
第11章 Swing组件
•首要工作是根据问题描述来设计界面,创建界面中所需的各种组件,这个工作 在构造方法中完成。 •第二项也是最重要的个工作就需要响应执行本程序时可能出现的各种按钮事件。 •按钮事件监听器接口中的抽象方法actionPerformed, ShowNum方法, equal方法。
第11章 Sw,JRadioButton单选项 组件
•【例11-2】多选项和单选项组件的应用。
11.3 综合运用实例
【实例11】
问题描述:
第11章 Swing组件
•计算器程序界面上的组件包括10个数字按钮(0~9)、 4个运算按钮(+、-、*、/)、1个清空按钮(C)、等号按钮(=) 和用于显示数值的文本框。 •使用该界面中的各个按钮以实现简单的四则运算功能。
第11章 Swing组件
第11章 Swing组件
第11章 Swing组件
11.1 Swing组件介绍 11.2 Swing常见组件的使用 11.3 综合运用实例
11.1 Swing组件介绍
• 软件包javax.swing。
第11章 Swing组件
• Swing组件,也被称之为“轻量级”( lightweight)组件。
Swing组件大全

一抛砖引玉本文指在利用一个小程序”Swing 组件大全”来引导大家学习Java这门语言,熟悉Ja va Swing的各个组件。
并在学习过程中参考作者设计这一程序的方法和思想,最终形成自己的思维方式和学习方式。
你能举一返三是作者最开心的事情。
小程序演示了Java Swing 大部分组件。
最后附上了全部代码及详细的注释说明。
希望本文能对大家学习Java有所帮助。
随着Java风潮席卷国内,学习Java的方法和路径越来越多。
而在大量的书本前,在J ava庞大的类库前大大家都有点迷失方向的感觉,是学J2EE,J2ME还是。
然而所有的这些都或多或少的离不开J2SE。
万丈高楼平地起。
J2SE是整个Java的基础,学好了这个对Java的各个方向都是很有利的。
而学习J2SE的最初点就在界面设计,因为界面编程是你来感觉最直接的手段,是提高大家编程兴趣的很好开始,因为你写完程序编译后可马上看到自己的成果。
而不像后台编程做完了都感受不到效果。
而好的界面也是你测试你其他程序的基础。
界面设计!不就是拖拉操作吗?如果是VB,VC等可视化的编程,的确只是一些拖拉操作,由于Java语言的设计中所有的东西都是程序代码,在Java中如果想要设计一个好的界面,可不是简单的拖拉操作能完成的。
即使使用了如JBuilder这么强大的可视化工具,你也得亲自动手写一些界面设计代码才能很好的完成你的任务。
如果你能在此基础上理解Java界面设计的思想,对你学习这门语言将有莫大的帮助。
Java界面设计主要涉及Awt,Swing两大类库,Swing是Awt的扩展和功能加强。
下面我们就以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:指示对话框的父窗口对象,一般为当前窗口。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
import javax.swing.*;import java.awt.*;import java.awt.event.*;import javax.swing.tree.*;import javax.swing.event.*;import javax.swing.border.*;import javax.swing.table.*;/*** Swing 组件测试程序* 测试Swing所有组件及其相应的事件* @author 天翼.李 2003.4.17 晚23:14* @link * @link robococde@*/public class SwingT est extends JFrame{/*** 主模块,初始化所有子模块,并设置主框架的相关属性 */public SwingTest(){// 初始化所有模块MenuTest menuTest = new MenuTest();LeftPanel leftPanel = new LeftPanel();RightPanel rightPanel = new RightPanel();BottomPanel bottomPanel = new BottomPanel();CenterPanel centerPanel = new CenterPanel();// 设置主框架的布局Container c = this.getContentPane();// c.setLayout(new BorderLayout())this.setJMenuBar(menuTest);c.add(leftPanel,BorderLayout.WEST);c.add(rightPanel,BorderLayout.EAST);c.add(centerPanel,BorderLayout.CENTER);c.add(bottomPanel,BorderLayout.SOUTH);// 利用无名内隐类,增加窗口事件this.addWindowListener(new WindowAdapter(){public void WindowClosing(WindowEvent e){// 释放资源,退出程序dispose();System.exit(0);}});setSize(700,500);setTitle("Swing 组件大全简体版");// 隐藏frame的标题栏,此功暂时关闭,以方便使用window事件// setUndecorated(true);setLocation(200,150);show();}/////////////////////////////////////////////////////////////////////////////*** 菜单栏处理模块* JMenuBar --+* --JMenu--+* --JMenuItem --ActionListener**/class MenuTest extends JMenuBar{private JDialog aboutDialog;/*** 菜单初始化操作*/public MenuTest(){JMenu fileMenu = new JMenu("文件");JMenuItem exitMenuItem = new JMenuItem("退出",KeyEvent.VK_E);JMenuItem aboutMenuItem = new JMenuItem("关于...",KeyEvent.VK_A);fileMenu.add(exitMenuItem);fileMenu.add(aboutMenuItem);this.add(fileMenu);aboutDialog = new JDialog();initAboutDialog();// 菜单事件exitMenuItem.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){dispose();System.exit(0);}});aboutMenuItem.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){// "关于"对话框的处理aboutDialog.show();}});}/*** 返回关于对话框*/public JDialog getAboutDialog(){return aboutDialog;}/*** 设置"关于"对话框的外观及响应事件,操作和JFrame一样都是在内容 * 框架上进行的*/public void initAboutDialog(){aboutDialog.setTitle("关于");Container con =aboutDialog.getContentPane();// Swing 中使用html语句Icon icon = new ImageIcon("smile.gif");JLabel aboutLabel = new JLabel("<html><b><font size=5>"+"<center>Swing 组件大全简体版!"+"<br>天翼.李",icon,JLabel.CENTER);//JLabel aboutLabel = new JLabel("Swing 组件大全简体版!",icon,JLabel.CENTER);con.add(aboutLabel,BorderLayout.CENTER);aboutDialog.setSize(450,225);aboutDialog.setLocation(300,300);aboutDialog.addWindowListener(new WindowAdapter(){public void WindowClosing(WindowEvent e){dispose();}});}}/////////////////////////////////////////////////////////////////////////////*** 最左边模块,继承JPanel,初始化内容为JTree* JPanel--+* --JTree*/class LeftPanel extends JPanel{private int i = 0;public LeftPanel(){DefaultMutableTreeNode root = new DefaultMutableTreeNode("Root");DefaultMutableTreeNode child = new DefaultMutableTreeNode("Child");DefaultMutableTreeNode select = new DefaultMutableTreeNode("select");DefaultMutableTreeNode child1 = new DefaultMutableTreeNode(""+i);root.add(child);root.add(select);child.add(child1);JTree tree = new JTree(root);tree.getSelectionModel().setSelectionMode(TreeSelectionModel.DISCONTIGUO US_TREE_SELECTION);// 每个节点的行高tree.setRowHeight(20);tree.addTreeSelectionListener(new TreeSelectionListener (){public void valueChanged(TreeSelectionEvent e){// 内隐类不能直接引用外部类tree,1.外部变量可申明为final 2.新建外部类的对象JTree tree =(JTree)e.getSource();DefaultMutableTreeNode selectNode = (DefaultMutableTreeNode)tree.getLa stSelectedPathComponent();i++;selectNode.add(new DefaultMutableTreeNode(""+i));}});tree.setPreferredSize(new Dimension(100,300));// tree.setEnabled(true);JScrollPane scrollPane = new JScrollPane(tree);//scrollPane.setSize(100,350);this.add(scrollPane);}}/////////////////////////////////////////////////////////////////////////////*** 最下面层模块,继承JPanel,初始化内容为进度条,并由定时器控制* JPanel--+* --JProcessBar --Timer*/class BottomPanel extends JPanel{private JProgressBar pb;//////////////////////////////////////////public class//////////////////////////////public BottomPanel(){pb = new JProgressBar();pb.setPreferredSize(new Dimension(680,20));// 设置定时器,用来控制进度条的处理Timer time = new Timer(1,new ActionListener()int counter = 0;public void actionPerformed(ActionEvent e){counter++;pb.setValue(counter);Timer t = (Timer)e.getSource();// 如果进度条达到最大值重新开发计数if (counter == pb.getMaximum()){t.stop();counter =0;t.start();}}});time.start();pb.setStringPainted(true);pb.setMinimum(0);pb.setMaximum(1000);pb.setBackground(Color.white);pb.setForeground(Color.red);this.add(pb);}/*** 设置进度条的数据模型*/public void setProcessBar(BoundedRangeModel rangeModel){pb.setModel(rangeModel);}}/////////////////////////////////////////////////////////////////////////////*** 最右边模块,继承JPanel,初始化各种按钮* JPanel--+* --JButton --JToggleButton -- JList -- JCombox --JCheckBox .... */class RightPanel extends JPanel{public RightPanel(){this.setLayout(new GridLayout(8,1));// 初始化各种按钮JCheckBox checkBox = new JCheckBox("复选按钮");JButton button = new JButton("打开文件");button.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){JFileChooser file = new JFileChooser();int result = file.showOpenDialog(new JPanel());if (result ==file.APPROVE_OPTION){String fileName = file.getSelectedFile().getName();String dir = file.getCurrentDirectory().toString();JOptionPane.showConfirmDialog(null,dir+"\\"+fileName,"选择的文件",JOptionPane.YES_OPTION);}}});//////////////////////////////////////////public//////////////////////////////////////////JToggleButton toggleButton = new JToggleButton("双态按钮");ButtonGroup buttonGroup = new ButtonGroup();JRadioButton radioButton1 = new JRadioButton("单选按钮1",false);JRadioButton radioButton2 = new JRadioButton("单选按钮2",false);// 组合框的处理JComboBox comboBox = new JComboBox();comboBox.setToolTipText("点击下拉列表增加选项");comboBox.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){JComboBox comboBox =(JComboBox)e.getSource();comboBox.addItem("程序员");comboBox.addItem("分析员");}});// 列表框的处理DefaultListModel litem = new DefaultListModel();litem.addElement("香蕉");litem.addElement("水果");JList list = new JList(litem);list.addListSelectionListener(new ListSelectionListener (){public void valueChanged(ListSelectionEvent e){JList l = (JList)e.getSource();Object s= l.getSelectedValue();JOptionPane.showMessageDialog(null,s,"消息框",JOptionPane.YES_OPTION);}});// 增加按钮组buttonGroup.add(radioButton1);buttonGroup.add(radioButton2);// 增加各种按钮到JPanel中显示add(button);add(toggleButton);add(checkBox);add(radioButton1);add(radioButton2);add(comboBox);add(list);this.setBorder(new EtchedBorder(EtchedBorder.LOWERED,Color.LIGHT_GRAY, Color.blue));}}/////////////////////////////////////////////////////////////////////////////*** 中间层模块,继承JPanel,初始化页签,并在页签中设置文本区,表格,* 文本区上下用分隔条分隔* JPanel--+* -JTabbedPane--+* --Draw --JTable -JTextAreas -JText --JPopupMenu*/class CenterPanel extends JPanel{public CenterPanel(){JTabbedPane tab = new JTabbedPane(JTabbedPane.TOP);JTextField textField = new JTextField("文本域,点击打开<文件按钮>可选择文件"); textField.setActionCommand("textField");JTextPane textPane = new JTextPane();textPane.setCursor(new Cursor(Cursor.TEXT_CURSOR));textPane.setText("编辑器,试着点击文本区,试着拉动分隔条。