JavaSwing界面设计(所有控件及示例)
- 格式:ppt
- 大小:1.80 MB
- 文档页数:133
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中⼤部分常⽤的组件。
有些功能界⾯上反映不出来,⼤家可尝试编译源代码点南击各个部分,看看它们的响应事件。
java-Swing控件的用法和范例类JTableJTable用来显示和编辑规则的二维单元表。
JTable有很多用来自定义其呈现和编辑的设施,同时提供了这些功能的默认设置,从而可轻松地设置简单表。
例如,要设置一个10行10列的表:TableModel dataModel=new AbstractTableModel(){public int getColumnCount(){return10;}public int getRowCount(){return10;}public Object getValueAt(int row,int col){return new Integer(row*col);} };JTable table=new JTable(dataModel);JScrollPane scrollpane=new JScrollPane(table);注意,如果要在单独的视图中(在JScrollPane外)使用JTable并显示表标题,则可以使用getTableHeader()获取并单独显示它。
设计使用JTable的应用程序时,要严格注意用来表示表数据的数据结构。
DefaultTableModel 是一个模型实现,它使用一个Vector来存储所有单元格的值。
该Vector由包含多个Object 的Vector组成。
除了将数据从应用程序复制到DefaultTableModel中之外,还可以TableModel接口的方法来包装数据,这样可将数据直接传递到JTable,如以上示例所示。
这通常可以提高应用程序的效率,因为模型可以自由选择最适合数据的内部表示形式。
在决定使用AbstractTableModel还是使用DefaultTableModel方面有一个好的实践经验,即在创建子类时使用AbstractTableModel作为基类,在不需要创建子类时则使用DefaultTableModel。
java swing 代码例子Java Swing是Java语言中用于构建图形用户界面(GUI)的一个开发工具包。
它提供了一组丰富的组件和容器,可以用于创建各种界面元素,如按钮、文本框、标签等。
下面是一些使用Java Swing的代码示例。
1. 创建一个简单的窗口```javaimport javax.swing.JFrame;public class SimpleWindow {public static void main(String[] args) {JFrame frame = new JFrame("简单窗口");frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setSize(400, 300);frame.setVisible(true);}}```这段代码创建了一个简单的窗口,并设置了窗口的标题、关闭操作、大小和可见性。
2. 添加按钮和事件监听器```javaimport javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JOptionPane;public class ButtonExample {public static void main(String[] args) {JFrame frame = new JFrame("按钮示例");frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);JButton button = new JButton("点击我");button.addActionListener(e -> {JOptionPane.showMessageDialog(frame, "你点击了按钮");});frame.add(button);frame.setSize(400, 300);frame.setVisible(true);}}```这段代码创建了一个带有一个按钮的窗口,当按钮被点击时,会弹出一个对话框显示"你点击了按钮"。
JAVAswing-常⽤组件在图形⽤户界⾯编程中,我们常常会提供⽤户登陆界⾯,⽐如登陆到会员管理系统、登陆到⼯资管理系统、仓库管理系统...常⽤组件Ⅰ.⽂本框(JTextField)Ⅱ.密码框(JPasswordField)Ⅲ.标签(JLable)Ⅳ.复选框(JCheckBox)Ⅴ.单选框(JRadioButton)Ⅵ.组合单选框(ButtonGroup)Ⅶ.下拉框(JComboBox)Ⅷ.列表(JList)Ⅸ.滚动窗格组件(JScrollPane)Ⅹ.多⾏⽂本框(JTextArea)ⅩⅠ.选项卡(JTabbedPane)实例简单会员管理系统登录界⾯1/*2 * 作者:⽩客C3 * 时间:2020年03⽉05⽇4 * 内容:gui窗体5 * 步骤:6 * 1.继承JFrame容器7 * 2.定义需要的组件8 * 3.创建组件9 * 4.设置布局管理器10 * 5.添加组件11 * 6.对窗体设置12 * 7.显⽰窗体13*/1415package com.beekc.www;16import java.awt.*;17import javax.swing.*;1819//继承JFrame20public class Beekc extends JFrame{2122//定义组件23 JPanel jPanel1,jPanel2,jPanel3;24 JLabel jlb1,jlb2;25 JTextField jt;26 JPasswordField jpssswd;27 JButton jb1,jb2;2829public static void main(String[] args){30 Beekc beekc = new Beekc();31 }3233public Beekc(){34//创建组件35 jPanel1 = new JPanel();36 jPanel2 = new JPanel();37 jPanel3 = new JPanel();3839 jlb1 = new JLabel("⽤户");40 jlb2 = new JLabel("密码");41 jt = new JTextField(10);42 jpssswd = new JPasswordField(10);43 jb1 = new JButton("登录");44 jb2 = new JButton("注册");4546//设置布局管理器47this.setLayout(new GridLayout(3,1));48//添加JPanel49 jPanel1.add(jlb1);50 jPanel1.add(jt);51 jPanel2.add(jlb2);52 jPanel2.add(jpssswd);53 jPanel3.add(jb1);54 jPanel3.add(jb2);55//JPanel添加到JFanel56this.add(jPanel1);57this.add(jPanel2);58this.add(jPanel3);5960//窗体设置61this.setTitle("会员管理系统");62this.setSize(270,150);63this.setResizable(false);64this.setLocation(200,200);65this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);6667//显⽰68this.setVisible(true);6970 }7172 }⽤户注册界⾯1/*2 * 作者:⽩客C3 * 时间:2020年03⽉06⽇4 * 内容:gui窗体5 * 步骤:6 * 1.继承JFrame容器7 * 2.定义需要的组件8 * 3.创建组件9 * 4.设置布局管理器10 * 5.添加组件11 * 6.对窗体设置12 * 7.显⽰窗体13*/1415package com.beekc.www;161718import javax.swing.*;19import java.awt.*;2021//继承JFrame22public class Beekc extends JFrame {2324//定义组件25 JPanel jPanel1,jPanel2,jPanel3;26 JLabel jlb1,jlb2;27 JCheckBox jc1,jc2,jc3;28 JRadioButton jrb1,jrb2;29 ButtonGroup bg;30 JButton jb1,jb2;3132public static void main(String[] args){33 Beekc beekc = new Beekc();34 }3536//构造函数37public Beekc(){38//创建组件39 jPanel1 =new JPanel();40 jPanel2 =new JPanel();41 jPanel3 =new JPanel();42 bg = new ButtonGroup();4344 jlb1 = new JLabel("你喜欢的运动");45 jlb2 = new JLabel("性别");46 jc1 =new JCheckBox("⾜球");47 jc2 =new JCheckBox("篮球");48 jc3 =new JCheckBox("排球");49 jrb1 = new JRadioButton("男");50 jrb2 = new JRadioButton("⼥");51 jb1 = new JButton("注册");52 jb2 = new JButton("取消");5354//设置布局管理器5556//JRadioButton添加ButtonGroup为⼀组57 bg.add(jrb1);58 bg.add(jrb2);5960//组件加到JPanel61 jPanel1.add(jlb1);62 jPanel1.add(jc1);63 jPanel1.add(jc2);64 jPanel1.add(jc3);65 jPanel2.add(jlb2);66 jPanel2.add(jrb1);67 jPanel2.add(jrb2);68 jPanel3.add(jb1);69 jPanel3.add(jb2);70//布局71this.setLayout(new GridLayout(3,1));7273//添加组件74this.add(jPanel1);75this.add(jPanel2);76this.add(jPanel3);7778//对窗体设置79this.setTitle("⽤户注册");80this.setSize(270,150);81this.setResizable(false);82this.setLocation(200,200);83this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 8485//显⽰86this.setVisible(true);878889 }9091 }⽤户调查界⾯1/*2 * 作者:⽩客C3 * 时间:2020年03⽉06⽇4 * 内容:gui窗体5 * 步骤:6 * 1.继承JFrame容器7 * 2.定义需要的组件8 * 3.创建组件9 * 4.设置布局管理器10 * 5.添加组件11 * 6.对窗体设置12 * 7.显⽰窗体13*/1415package com.beekc.www;16import java.awt.*;17import javax.swing.*;1819//继承JFrame20public class Beekc extends JFrame{2122//定义组件23 JPanel jPanel1,jPanel2;24 JLabel jlb1,jlb2;25 JComboBox jcb;26 JList jl;27 JScrollPane jsp;2829public static void main(String[] args){30 Beekc beekc = new Beekc();31 }3233//构造函数34public Beekc(){35//创建组件36 jPanel1 = new JPanel();37 jPanel2 = new JPanel();38 jlb1 = new JLabel("籍贯");39 jlb2 = new JLabel("旅游地⽅");4041 String[] strJComboBox = {"北京","天津","⼴东"};42 jcb = new JComboBox(strJComboBox);4344 String[] strJLIst = {"故宫","天安门","长城","颐和园"};45 jl = new JList(strJLIst);46//设置显⽰多少个47 jl.setVisibleRowCount(3);48 jsp = new JScrollPane(jl);4950//设置布局管理器51//添加到JPanel52 jPanel1.add(jlb1);53 jPanel1.add(jcb);54 jPanel2.add(jlb2);55 jPanel2.add(jsp);5657this.setLayout(new GridLayout(1,2));5859//添加组件60this.add(jPanel1);61this.add(jPanel2);6263//对窗体设置64this.setTitle("⽤户调查");65this.setSize(270,110);66this.setResizable(false);67this.setLocation(200,200);68this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 6970//显⽰71this.setVisible(true);72 }7374 }翻译软件界⾯1/*2 * 作者:⽩客C3 * 时间:2020年03⽉06⽇4 * 内容:gui窗体5 * 步骤:6 * 1.继承JFrame容器7 * 2.定义需要的组件8 * 3.创建组件9 * 4.设置布局管理器10 * 5.添加组件11 * 6.对窗体设置12 * 7.显⽰窗体13*/1415package com.beekc.www;16import java.awt.*;17import javax.swing.*;1819//继承JFrame20public class Beekc extends JFrame{2122//定义组件23 JSplitPane jsp;24 JList jList;25 JLabel jl1;2627public static void main(String[] args){28 Beekc beekc = new Beekc();29 }3031//构造函数32public Beekc(){33//创建组件34 String[] words = {"bird","boy","girl"};35 jList =new JList(words);36//new ImageIcon,存放图⽚37 jl1 = new JLabel(new ImageIcon("images/jinshanciba.png"));38//拆分窗体39 jsp = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,jList,jl1); 40//可以收缩41 jsp.setOneTouchExpandable(true);4243//设置布局管理器4445//添加组件46this.add(jsp);4748//窗体设置49this.setTitle("⾕歌翻译");50this.setSize(760,480);51this.setLocation(200,200);52this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);5354//显⽰55this.setVisible(true);56 }57 }聊天界⾯1/*2 * 作者:⽩客C3 * 时间:2020年03⽉06⽇4 * 内容:gui窗体5 * 步骤:6 * 1.继承JFrame容器7 * 2.定义需要的组件8 * 3.创建组件9 * 4.设置布局管理器10 * 5.添加组件11 * 6.对窗体设置12 * 7.显⽰窗体13*/1415package com.beekc.www;16import java.awt.*;17import javax.swing.*;1819//继承JFrame20public class Beekc extends JFrame{2122//定义组件23 JTextArea jTextArea;24 JScrollPane jScrollPane;25 JPanel jPanel;26 JTextField jTextField;27 JButton jButton;2829public static void main(String[] args){30 Beekc beekc = new Beekc();31 }3233//构造函数34public Beekc(){35//创建组件36 jTextArea = new JTextArea();37 jScrollPane = new JScrollPane(jTextArea);3839 jPanel = new JPanel();40 jTextField = new JTextField(20);41 jButton = new JButton("发送");4243//设置布局管理器44//添加到JPanel45 jPanel.add(jTextField);46 jPanel.add(jButton);4748//添加组件49this.add(jScrollPane);50this.add(jPanel,BorderLayout.SOUTH);5152//窗体设置53this.setTitle("聊天界⾯");54this.setIconImage((new ImageIcon("images\\qq.png")).getImage()); 55this.setSize(320,270);56this.setLocation(200,200);57this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);5859//显⽰60this.setVisible(true);61 }6263 }聊天登录界⾯。
当选择使用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类是最简单的布局管理器。