JavaSwing界面设计(所有控件及示例)
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控件的用法和范例
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程序设计第11章 Swing程序设计
第11章 Swing程序设计
第11章 Swing程序设计
11.1 11.2 11.3 11.4 11.5 11.6 Swing概述 创建窗体 常用布局管理器 常用面板 常用组件 常用事件处理
11.2 创 建 窗 体
在开发Java应用程序时,通常情况下利用JFrame 类创建窗体。利用JFrame类创建的窗体分别包含标题、 最小化按钮、最大化按钮和关闭按钮。 JFrame类提供了一系列用来设置窗体的方法,例 如通过的setTitle(String title)方法,可以设置窗体的标题; 通过setBounds(int x, int y, int width, int height)方法可以 设置窗体的显示位置及大小,该方法接受4个int型参数, 前两个参数用来设置窗体的显示位置,依次为窗体左上 角的点在显示器中的水平和垂直坐标,后两个参数用来 设置窗体的大小,依次为窗体的宽度和高度。
【例6】
11.4.1 JScrollPane面板
JScrollPane类实现了一个带有滚动条的面板,用 来为某些组件添加滚动条,例如在学习JList和 JTextArea组件时均用到了该组件,JScrollPane类提供 的常用方法如下表所示。
方 法 功 能
setViewportView(Component view)
静态常量 TOP 常 量 值 1 标签内容显示位置 文字显示在图片的上方
CENTER BOTTOM
0 3
文字与图片在垂直方向重叠显示 文字显示在图片的下方
【例8】
JButton(按钮)组件
JButton组件是最简单的按钮组件,只是在按下和释放 两个状态之间进行切换,可以通过捕获按下并释放的动作执 行一些操作,从而完成和用户的交互。JButton类提供了一 系列用来设置按钮的方法,例如通过setText(String text)方 法设置按钮的标签文本,通过下面的代码就可以创建一个最 简单按钮:
java swing 代码例子
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);}}```这段代码创建了一个带有一个按钮的窗口,当按钮被点击时,会弹出一个对话框显示"你点击了按钮"。
图形用户界面设计——Swing
Swing目录Swing (1)1.组件 (2)1.1容器组件 (2)Jframe常用方法: (2)Jpanel常用方法: (3)1.2视图组件(操作组件) (3)Jlabel(标签) (3)JTextField(单行文本) (3)JPasswordField(单行密码文本) (4)JButton(按钮) (4)2.基本组件 (4)JmenuBar (菜单栏类) (4)Jmenu (菜单类) (4)JmenuItem (菜单项类) (5)JtoolBar(工具栏) (5)JTextArea (纯文本的多行区域) (5)JRadioButton (单选按钮) (5)JCheckBox (复选框) (5)JcomboBox(下拉框) (5)3.高级组件 (6)Jlist (列表) (6)JPopupMenu, 右键菜单 (6)JFileChooser 文件选择框 (6)JSplitPane 拆分组件区域 (6)JTabbedPane 选项卡 (6)JDesktopPane 文档桌面 (7)JTree 树 (7)JTable 表格 (7)4.布局 (7)BorderLayout类(边框布局)→为窗体的默认布局 (7)BorderLayout的常用方法 (8)FlowLayout 类 (流布局或线性布局)→为面板的默认布局 (8)FlowLayout的常用方法 (8)GridLayout类(网格布局) (8)GridBagLayout(网格带布局) (8)类布置的组件的约束 (9)5.事件类 (9)ActionEvent(单击事件) (10)ComponentEvent(组件调整事件) (10)ContainerEvent(添加删除组件事件) (10)FocusEvent(焦点事件) (10)ItenEvent(复选框或列表项事件) (10)KeyEvent(键盘输入事件) (10)MouseEvent(鼠标事件) (11)TextEvent(文本域事件) (11)WindowEvent(窗体事件) (11)6.事件监听器 (11)MouseListener(鼠标事件侦听器接口) (11)MouseAdapter(鼠标事件的抽象适配器类) (11)WindowListener(窗口事件的侦听器接口) (11)WindowAdapter(窗口事件的抽象适配器类) (11)7.标准对话框 (11)JoptionPane(弹出对话框) (11)导包:javax.swing.*;swing:基于awt的扩展,获取系统资源库组件后会自动对其进行重新绘制。
Java程序设计:第八章 Swing图形界面程序设计
原型 public FlowLayout(int align )
描述
FlowLayerout布局时,组件在容器以从左到右,从 上到下的方式排列。 align用于指定行对齐方式, FlowLayout.LEFT表示左 对齐,相应的有右对齐和居中对齐。
java.awt.Container的成员JLabel(2)
JFrame的成员方法
原型
public JFrame( ) public JFrame(String title) public void setDefaultCloseOperation( int operation) public void setSize(int width, int height) public void setVisible(boolean b) public Container getContentPane()
描述 构造一个无标题不可见的框架 构造一个标题为title的框架 设置当关闭框架时的操作,例如operation为 JFrame.EXIT_ON_CLOSE时表示退出程序
设置框架的大小
设置框架是否可见 返回当前框架的内容窗格
7
组件和容器 -JFrame和JLabel(3)
FlowLayout布局的成员方法:
4
组件和容器(3)
一般容器包括: 面板JPanel,滚动窗格JScrollPane,选项卡 窗格JTabbedPane和工具栏JToolBar。
专用容器包括:内部框架(JInternalFrame),分层窗格 (JLayedPane)、根窗格(JRootPane)、玻璃窗格(GlassPane )、内 容窗格(ContentPane)。
描述 构造一个父窗口为owner,标题为title,模式为 modal的对话框。Modal为true表示有模式,为false 表示无模式 设置对话框的大小
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用户界面
• • • • • • • • •
1.文本域 构造方法 JTextField()--文本域的长度为一个字符 JTextField(int x)--文本域的长度为X个字 符 JTextField(String s)--文本域的初始字符 串为S JTextField(String s,int x)--文本域的初始 字符串为S,长度为X个字符
处理超长文本 • textArea.setLineWrap(true);
• • 例:TextAreaTest
• • • • • • • •
3.标签和标签组 标签是容纳文本的组件 常用来标识别的组件 构造方法: JLabel(String text) JLabel(Icon icon) JLabel(String text,int align) JLabel(String text,Icon,icon,int align)
• CardLayout • CardLayout的容器可以容纳多个组件, 但是实际上同一时刻容器只能从这些组 件中选出一个来显示,就象一叠“扑克
2.解决方法: 创建一个面板,先将组件添加到面板上, 再将面板添加到更大的容器里.代码如下:
• 符号表示 • BorderLayout常量被定义为字符串 • 例:BorderLayout.SOUTH被定义为字符 串:South • 上例应用时可写为: • add(button1,“North”); • add(button2,“South”);
• GridLayout • 把容器划分成若干行乘若干列的网格区 域,组件就位于这些划分出来的小格中 • 可用方法setLayout来设置网格布局 • setLayout(new GridLayout(行数、列数)) • setLayout(new GridLayout(3,4));
Java Swing GUI 编程技术及应用实例
1、Swing 组件技术简介 (1)GUI界面 用户与程序之间交互的一个控制面板,其内包含有 菜单、控件(或组件)和容器并能响应用户的事件。 (2)Swing组件是纯Java代码实现 Swing没有本地代码并不依赖操作系统的支持(但 JFrame、JDialog、JApplet除外),因此能够实现与 OS平台无关。 Swing在不同的平台上表现一致,并且有能力提供本地 窗口系统不支持的其它特性,和具备“可插接的外观和 感觉”特性(可以动态改变)。 (3)Swing组件分为四大类
顶级容器 JFrame、JApplet、 JDialog 特殊功能的容器 JLayeredPanel、 JRootPane InternalFrame、
JPanel、JScrollPanel、JToolbar JSplitPanel、JTabbedPanel、 基本组 件 JButton、 JCombobox、 JList、 JMenu、 JSlider、 JTextField 等
(1)与菜单编程实现有关的各个类 菜单条JMenuBar类——利用 setJMenuBar()方法加入窗口中 级联菜单JMenu类 菜单项JMenuItem类 选择性菜单项 JCheckBoxMenuItem类 选择性的菜单项但为圆点的 JRadioButtonMenuItem类 (2)主要的编程步骤
●基本组件 ●菜单条菜单组件 ● 容器组件 ● 弹出式菜单组件
(4)Swing组件所在的包
javax.swing 每个组件都以“J” 开头,各个组 件都是JComponent的子类。
对Swing组件的学习 应该重点掌握各个 组件的属性、方法 和事件编程 普通功能的容器
2、Swing组件的分类
java图形用户界面设计Swing常用组件(阅读)
for ( int i=j0f;.i<s3e6t;Bi+a+)c{kground(Color.blue);
JPanel jPanel = new JPanel();
jf.getContentPane().setBackground(Color.black);
文本框默认为可编辑的
获得文本域的内容 x= Integer.parseInt(text1.getText().trim()); 重新设置文本域的内容
resultText.setText(s);
NCEPU
Swing的常用组件——JTextField
获取两个文本域的输入并求和,然后显示在第三个文本域中。
NCEPU
其他Swing组件的使用
NCEPU
Swing的常用组件—复选框JCheckBox
JCheckBox(复选框)有选中和未选中两种状态,允许用户从 一组选项中进行多个选择。
getText setText
获取复选框的文本 设置复选框的文本
NCEPU
Swing的常用组件—复选框JCheckBox
}
class TFFrame extends JFrame { JTextField num1, num2, num3; public void launchFrame() { num1 = new JTextField(10); num2 = new JTextField(10); num3 = new JTextField(15); JLabel lblPlus = new JLabel("+"); JButton btnEqual = new JButton("="); btnEqual.addActionListener(new MyMonitor()); setLayout(new FlowLayout()); add(num1); add(lblPlus); add(num2); add(btnEqual); add(num3); pack(); setVisible(true); }
java swing图形用户界面
java swing图形用户界面实例1:(文本区,菜单)import javax.swing.*;import java.awt.*;import java.awt.event.*;public class MyFrame1 extends JFrame{JTextArea area;JMenuBar bar;JMenu menu;JMenuItem itemCopy,itemCut,itemPaste;menuListen listen =new menuListen();MyFrame1(){init();setBounds(100,100,400,400);setVisible(true);setDefaultCloseOperation(EXIT_ON_CLOSE);}public void init(){setLayout(new FlowLayout());area=new JTextArea(5,20);add(area);bar=new JMenuBar();setJMenuBar(bar);menu=new JMenu("编辑");bar.add(menu);itemCopy=new JMenuItem("复制");itemCut=new JMenuItem("剪切");itemPaste=new JMenuItem("粘贴");menu.add(itemCopy);menu.add(itemCut);menu.add(itemPaste);itemCopy.addActionListener(listen);itemCut.addActionListener(listen);itemPaste.addActionListener(listen);listen.setItem(itemCopy, itemCut, itemPaste, area);}public static void main(String[] args) {MyFrame1 win=new MyFrame1();}}class menuListen implements ActionListener{JMenuItem itemCopy,itemCut,itemPaste;JTextArea area;public void setItem(JMenuItem itemCopy,JMenuItem itemCut,JMenuItem itemPaste,JTextArea area){this.itemCopy=itemCopy;this.itemCut=itemCut;this.itemPaste=itemPaste;this.area=area;}public void actionPerformed(ActionEvent e){ if(e.getSource()==itemCopy){area.copy();}else if(e.getSource()==itemCut){area.cut();}else if(e.getSource()==itemPaste){area.paste();}}}实例2:(单选按钮,标签,按钮)import javax.swing.*;import java.awt.*;import java.awt.event.*;public class MyFrame2 extends JFrame{JTextArea area;JMenuBar bar;JMenu menu;JMenuItem itemCopy,itemCut,itemPaste;menuListen1 listen =new menuListen1();buttonListen lis=new buttonListen();JRadioButton r1,r2;JButton button;MyFrame2(){init();setBounds(100,100,400,400);setVisible(true);setDefaultCloseOperation(EXIT_ON_CLOSE);}public void init(){setLayout(new FlowLayout());area=new JTextArea(5,20);add(area);bar=new JMenuBar();setJMenuBar(bar);menu=new JMenu("编辑");bar.add(menu);itemCopy=new JMenuItem("复制");itemCut=new JMenuItem("剪切");itemPaste=new JMenuItem("粘贴");menu.add(itemCopy);menu.add(itemCut);menu.add(itemPaste);itemCopy.addActionListener(listen);itemCut.addActionListener(listen);itemPaste.addActionListener(listen);listen.setItem(itemCopy, itemCut, itemPaste, area);add(new Label("班级:"));r1=new JRadioButton("信息管理1班",true);r2=new JRadioButton("信息管理2班");ButtonGroup group=new ButtonGroup();group.add(r1);group.add(r2);add(r1);add(r2);button=new JButton("确定");add(button);button.addActionListener(lis);lis.setArea(area,r1,r2);}public static void main(String[] args) {MyFrame2 win=new MyFrame2();}}class menuListen1 implements ActionListener{JMenuItem itemCopy,itemCut,itemPaste;JTextArea area;public void setItem(JMenuItem itemCopy,JMenuItem itemCut,JMenuItem itemPaste,JTextArea area){this.itemCopy=itemCopy;this.itemCut=itemCut;this.itemPaste=itemPaste;this.area=area;}public void actionPerformed(ActionEvent e){if(e.getSource()==itemCopy){area.copy();}else if(e.getSource()==itemCut){area.cut();}else if(e.getSource()==itemPaste){area.paste();}}}class buttonListen implements ActionListener{ JTextArea area;JRadioButton r1,r2;public void setArea(JTextArea area,JRadioButton r1,JRadioButton r2){this.area=area;this.r1=r1;this.r2=r2;}public void actionPerformed(ActionEvent e){ if(r1.isSelected()){area.setText("班级是:"+r1.getText());}if(r2.isSelected()){area.setText("班级是:"+r2.getText());}}}实例3:(选择框)import javax.swing.*;import java.awt.*;import java.awt.event.*;public class MyFrame3 extends JFrame{JTextArea area;JMenuBar bar;JMenu menu;JMenuItem itemCopy,itemCut,itemPaste;menuListen2 listen =new menuListen2();buttonListen1 lis=new buttonListen1();JRadioButton r1,r2;JButton button;JCheckBox box1,box2,box3,box4;MyFrame3(){init();setBounds(100,100,400,400);setVisible(true);setDefaultCloseOperation(EXIT_ON_CLOSE);}public void init(){setLayout(new FlowLayout());area=new JTextArea(5,20);add(area);bar=new JMenuBar();setJMenuBar(bar);menu=new JMenu("编辑");bar.add(menu);itemCopy=new JMenuItem("复制");itemCut=new JMenuItem("剪切");itemPaste=new JMenuItem("粘贴");menu.add(itemCopy);menu.add(itemCut);menu.add(itemPaste);itemCopy.addActionListener(listen);itemCut.addActionListener(listen);itemPaste.addActionListener(listen);listen.setItem(itemCopy, itemCut, itemPaste, area);add(new Label("班级:"));r1=new JRadioButton("信息管理1班",true);r2=new JRadioButton("信息管理2班");ButtonGroup group=new ButtonGroup();group.add(r1);group.add(r2);add(r1);add(r2);add(new Label("爱好:"));box1=new JCheckBox("唱歌");box2=new JCheckBox("跳舞");box3=new JCheckBox("玩游戏");box4=new JCheckBox("看书");add(box1);add(box2);add(box3);add(box4);button=new JButton("确定");add(button);button.addActionListener(lis);}public static void main(String[] args) {MyFrame3 win=new MyFrame3();}class buttonListen1 implements ActionListener{ public void actionPerformed(ActionEvent e){if(r1.isSelected()){area.setText("班级是:"+r1.getText());}if(r2.isSelected()){area.setText("班级是:"+r2.getText());}area.append("\n爱好:");if(box1.isSelected())area.append(box1.getText());if(box2.isSelected())area.append(box2.getText());if(box3.isSelected())area.append(box3.getText());if(box4.isSelected())area.append(box4.getText());}}}class menuListen2 implements ActionListener{ JMenuItem itemCopy,itemCut,itemPaste;JTextArea area;public void setItem(JMenuItem itemCopy,JMenuItem itemCut,JMenuItem itemPaste,JTextArea area){ this.itemCopy=itemCopy;this.itemCut=itemCut;this.itemPaste=itemPaste;this.area=area;}public void actionPerformed(ActionEvent e){ if(e.getSource()==itemCopy){area.copy();}else if(e.getSource()==itemCut){area.cut();}else if(e.getSource()==itemPaste){area.paste();}}}实例4:布局import javax.swing.*;import java.awt.*;import static java.awt.BorderLayout.*;public class MyFrame4JButton a,b,c,d,e;public MyFrame4(){init();setBounds(100,100,400,400);setVisible(true);setDefaultCloseOperation(EXIT_ON_CLOSE);}public void init(){/* setLayout(new BorderLayout());a=new JButton("aaaaa");b=new JButton("bbbbb");c=new JButton("ccccc");d=new JButton("ddddd");e=new JButton("eeeee");add(a,"East");add(b,"West");add(c,"North");add(d,"South");add(e,"Center");*//* setLayout(new FlowLayout());a=new JButton("aaaaa");b=new JButton("bbbbb");c=new JButton("ccccc");d=new JButton("ddddd");e=new JButton("eeeee");add(a);add(b);add(c);add(d);add(e);*//* setLayout(new GridLayout(3,2));a=new JButton("aaaaa");b=new JButton("bbbbb");c=new JButton("ccccc");d=new JButton("ddddd");e=new JButton("eeeee");add(a);add(b);add(c);add(d);add(e);*/JPanel panel=new JPanel(new GridLayout(2,1));a=new JButton("aaaaa");b=new JButton("bbbbb");c=new JButton("ccccc");d=new JButton("ddddd");e=new JButton("eeeee");add(panel);panel.add(a);JPanel p1=new JPanel(new GridLayout(1,2));panel.add(p1);p1.add(b);JPanel p2=new JPanel(new GridLayout(3,1));p1.add(p2);p2.add(c);p2.add(d);p2.add(e);}public static void main(String[] args) {MyFrame4 win=new MyFrame4();}}实例5:布局import javax.swing.*;import java.awt.*;import java.awt.event.*;public class MyFrame5 extends JFrame{JTextArea area;JMenuBar bar;JMenu menu;JMenuItem itemCopy,itemCut,itemPaste;menuListen3 listen =new menuListen3();buttonListen1 lis=new buttonListen1();JRadioButton r1,r2;JButton button;JCheckBox box1,box2,box3,box4;MyFrame5(){init();setBounds(100,100,400,400);setVisible(true);setDefaultCloseOperation(EXIT_ON_CLOSE);}public void init(){JPanel panel=new JPanel(new GridLayout(2,1));add(panel);area=new JTextArea(5,20);panel.add(area);bar=new JMenuBar();setJMenuBar(bar);menu=new JMenu("编辑");bar.add(menu);itemCopy=new JMenuItem("复制");itemCut=new JMenuItem("剪切");itemPaste=new JMenuItem("粘贴");menu.add(itemCopy);menu.add(itemCut);menu.add(itemPaste);itemCopy.addActionListener(listen);itemCut.addActionListener(listen);itemPaste.addActionListener(listen);listen.setItem(itemCopy, itemCut, itemPaste, area);JPanel pan=new JPanel(new GridLayout(3,1));panel.add(pan);JPanel p1=new JPanel(new GridLayout(1,3));pan.add(p1);p1.add(new Label("班级:"));r1=new JRadioButton("信息管理1班",true);r2=new JRadioButton("信息管理2班");ButtonGroup group=new ButtonGroup();group.add(r1);group.add(r2);p1.add(r1);p1.add(r2);JPanel p2=new JPanel(new GridLayout(1,5));pan.add(p2);box1=new JCheckBox("唱歌");box2=new JCheckBox("跳舞");box3=new JCheckBox("玩游戏");box4=new JCheckBox("看书");p2.add(new Label("爱好:"));p2.add(box1);p2.add(box2);p2.add(box3);p2.add(box4);button=new JButton("确定");button.addActionListener(lis);JPanel p3=new JPanel(new FlowLayout());p3.add(button);pan.add(p3);}public static void main(String[] args) {MyFrame5 win=new MyFrame5();}class buttonListen1 implements ActionListener{ public void actionPerformed(ActionEvent e){if(r1.isSelected()){area.setText("班级是:"+r1.getText());}if(r2.isSelected()){area.setText("班级是:"+r2.getText());}area.append("\n爱好:");if(box1.isSelected())area.append(box1.getText());if(box2.isSelected())area.append(box2.getText());if(box3.isSelected())area.append(box3.getText());if(box4.isSelected())area.append(box4.getText());}}}class menuListen3 implements ActionListener{ JMenuItem itemCopy,itemCut,itemPaste;JTextArea area;public void setItem(JMenuItem itemCopy,JMenuItem itemCut,JMenuItem itemPaste,JTextArea area){ this.itemCopy=itemCopy;this.itemCut=itemCut;this.itemPaste=itemPaste;this.area=area;}public void actionPerformed(ActionEvent e){ if(e.getSource()==itemCopy){area.copy();}else if(e.getSource()==itemCut){area.cut();}else if(e.getSource()==itemPaste){area.paste();}}}。
Java_11 Swing图形界面设计
容器中; ⚫ 设置组件事件;并将组件事件与代码关联。
17
第九章 Swing图形用户界面
◼ 9.1 概述 ◼ 9.2 容器组件 ◼ 9.3 基本组件 ◼ 9.4 布局管理器 ◼ 9.5 事件处理模型 ◼ 9.6 本章小结
JMenuItem
JMenu
JOptionPane
JPopupMenu JTextComponent JMenuBar
JTextArea JTextField
JPasswordField
JScrollPane
JLabel
JPanel
9
9.1 概述
◼ Swing的组件和容器层次
⚫ JComponent类是除了顶层容器以外所有Swing组件的基类,根据 继承关系,我们可以在每个基类中找到大多数GUI组件的常见操作
⚫ 定义了两种类型的组件: ➢ 顶层容器(JFrame,JApplet,JDialog和 JWindow)
➢ 轻量级组件(JComponent) ⚫ Swing组件都是AWT的Container类的直接子类和间接
子类。
⚫ Swing组件以"J"开头,除了有与AWT类似的按钮 (JButton)、标签(JLabel)、复选框(JCheckBox)、 菜单(JMenu)等基本组件外,还增加了一个丰富的高 层组件集合,如表格(JTable)、树(JTree)。
容器,别的组件都必须放在这个顶层容器上才能显现出 来。
12
9.1 概述-- Swing的组件和容器层次
Swing图形界面设计
//创建顶层容器并添加内容 创建顶层容器并添加内容. 创建顶层容器并添加内容
JFrame frame = new JFrame("SwingApplication"); SwingApplication app = new SwingApplication(); Component contents = app.createComponents(); frame.getContentPane().add(contents, BorderLayout.CENTER);
16有关swing的包javaxswingswing组件和使用工具javaxswingborderswing轻量组件的边框javaxswingcolorchooserjcolorchooser的支持类接口javaxswingevent事件和监听器类javaxswingfilechooserjfilechooser的支持类接口javaxswingplaf抽象类定义ui代表的行为javaxswingplafbasic实现所有标准界面样式公共功能的基类javaxswingplafmetal用户界面代表类它们实现metal界面样式javaxswingplafmulti多路外观的复合组件17有关swing的包javaxswingtablejtable组件javaxswingtext支持文档的显示和编辑javaxswingtexthtml支持显示和编辑html文档javaxswingtexthtmlparserhtml文档的分析器javaxswingtextrtf支持显示和编辑rtf文件javaxswingtreejtree组件的支持类javaxswingundo支持取消操作18javaxswingswing包是swing提供的最大包它包含将近100个类和25个接口几乎所有的swing组件都swingtable和swingtext中
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
11
中间容器
1. JPanel , JScrollPane , JSplitPane , JTabbedPane 、JInternalFrame、Box 这些容器提供将有关组件按照某种布局组合在 一起,然后放入中间容器或顶层容器的功能 JPanel提供一个面板 JScrollPane是具有滚动条的窗格 JSplitPane是具有拆分功能的窗格 JTabbedPane是带有若干标签的分类窗格 JInternalFrame用于创建内嵌于JFrame中的内 部框架 Box提供创建横向/纵向盒子容器的功能
界面设计
张蕾 zhanglei@
1
主要内容
一.概述
二.用户界面
三.组件介绍
四.布局管理
五.事件处理
六.菜单和表格
2
本章基本要求
了解AWT和Swing
熟悉4个顶层容器 掌握JFrame 熟悉常用的中间容器 会对组件进行布局
熟悉常用基本组件的创建和操作
二.Swing
1. 2. 3. Swing是对AWT的扩展,它是Java 2中的一个标准包 组件都以J开头,例如:JFrame、JButton等。swing界 面在不同的平台上外观完全一样,真正做到平台独立 import javax.swing.*;
6
界面设计中常用组件类的体系结构
ng.Object ponent java.awt.Container java.awt.Panel java.applet.Applet java.awt.Window java.awt.Dialog javax.swing.JComponent java.awt.Frame
Swing组件
JApplet
JDialog
JWindow
JFrame
7
用户界面
8
Java程序界面的构成
1. 3. 4. 5.
顶层容器包含若干个中间容器
每个中间容器包含若干个基本组件 按照合理的布局方式将它们组织在一起 基本组件可响应发生在其上的事件
9
顶层容器
一.容器
13
创建用户主窗口--JFrame
一.类 JFrame 是java.awt.Frame的子类
二.在Swing的组件中, JFrame 并不全是由Java编写的
1. 是一种与平台关系比较密切的组件(Heavyweight component)
ng.Object | +ponent | +--java.awt.Container | +--java.awt.Window | +--java.awt.Frame | +--javax.swing.JFrame
组件继承它的父容器的性质
4
Menu Text Box
Label
Combo Box List Box
Frame Window
Check Box Radio Button
Button
5
基本概述
一.AWT
1. 2. 3. AWT(Abstract Window Toolkit)是在Swing出现之前 用来设计界面的工具包 用awt包中的类创建的用户界面在不同的操作平台上有 不同的表现。使用不灵活 import java.awt.*;
12
1. 2. 3. 4. 5. 6.
基本组件
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. JLabel JButton、JCheckBox、JRadioButton JList、JComboBox JTextField、JPasswordField、JTextArea JToolBar、JToolTip、JProgressBar JSlider、JSpinner JFileChooser、JColorChooser JMenuBar、JMenu、JMenuItem、JCheckBoxMenuItem 、JRadioButtonMenuItem、JPopupMenu JTable JTree JOptionPane、JSeparator
14
创建用户主窗口--JFrame
1. 构造方法
JFrame() 创建无标题窗口。 JFrame(String s) 创建标题名字是字符串s的窗口。
例如:JFrame f = new JFrame(“Hello”);
2.
常用方法
setTitle(String title) 设置JFrame标题文本 get/ setSize():获取/设置JFrame的大小。 add(Object a):将组件添加到JFrame中。 dispose()关闭JFrame并回收用于创建窗口的任何资源。 setVisible(boolean b)设置JFrame的可见性。 setLocation(x,y) 设置JFrame在屏幕的位置
15
创建用户主窗口--JFrame
一.常用方法
void setExtendedState(int); //设置扩展的状态,取值: NORMAL ICONIFIED MAXIMIZED_HORIZ MAXIMIZED_VERT MAXIMIZED_BOTH //最大化 void setDefaultCloseOperation(int); //设置默认的关闭时的操作,取值: DO_NOTHING_ON_CLOSE HIDE_ON_CLOSE DISPOSE_ON_CLOSE EXIT_ON_CLOSE //关闭
会设置组件的颜色和字体 会处理组件上发生的事件 会创建菜单和表格
3
用户界面概述
一.用户界面的类型
字符用户界面(CUI):例如,MS-DOS 图形用户界面(GUI):例如,Microsoft Windows
二.GUI的组件
组件 基本的控制组件,例如:Button、Label等。
容器:能容纳和排列组件的组件
容器是用来容纳和管理一组界面元素的对象。基本 组件必须被安排在某个容器中,否则就无法使用。
有边框容器 无边框容器
Container
JWindow
JPanel
JDialog
JFrame
JApplet
10
顶层容器
1. JFrame , JApplet , JDialog , JWindow
作用:创建初始界面,为其他组件提供一 个容器,以构建满足用户需求的操作界面