Swing组件通常触发的事件及对应监听器
javagui知识点总结
javagui知识点总结一、Swing GUI组件Swing是Java中用于创建GUI的一套组件库,它提供了丰富的GUI组件,包括按钮、文本框、标签、列表框、表格等等。
这些组件可以通过代码进行创建、配置和操作,从而构建出丰富多彩的用户界面。
Swing组件还支持丰富的外观和行为定制,可以通过设置各种属性和监听器来满足不同的需求。
1.1 按钮(Button)按钮是Swing中最基本的GUI组件之一,它通常用于触发某个操作或事件。
在Swing中,按钮可以通过JButton类来创建,可以设置按钮的文本、图标、颜色、大小、位置等属性,并为按钮添加各种监听器来处理用户的点击事件。
1.2 文本框(TextField)文本框用于接受用户的输入,可以通过JTextField类来创建,可以设置文本框的默认文本、颜色、大小、位置等属性,并通过添加文本变化监听器来实时监测用户的输入。
1.3 标签(Label)标签用于显示静态文本信息,可以通过JLabel类来创建,可以设置标签的文本、字体、颜色、大小、位置等属性,还可以通过添加鼠标事件监听器来实现交互式标签。
1.4 列表框(ListBox)列表框用于显示一组选项供用户选择,可以通过JList类来创建,可以设置列表框的选项、颜色、大小、位置等属性,并为列表框添加选择事件监听器来处理用户的选项选择。
1.5 表格(Table)表格用于显示和编辑二维数据,可以通过JTable类来创建,可以设置表格的数据模型、列模型、传输器、颜色、大小、位置等属性,并为表格添加各种监听器来处理表格的编辑和选择事件。
二、事件处理在Java GUI编程中,事件处理是至关重要的一部分,它用于实现用户界面和用户交互的逻辑。
Swing组件提供了丰富的事件类型,包括鼠标事件、键盘事件、焦点事件、窗口事件等等,开发人员可以通过添加事件监听器来处理这些事件,从而实现用户交互的各种效果。
2.1 事件监听器(EventListener)事件监听器是一种特殊的接口,用于监听和处理特定类型的事件。
Swing事件大全
Swing中的事件处理监听器:ActionListener方法:actionPerformed事件:ActionEvent● String getActionCommand()actioncommand是控件内部的一个字符串,用于标识控件的状态。
此函数可以取得控件的状态,从而决定到底该做什么。
● int getModifiers()取得“产生此事件时,用户同时按下的组合键”● long getWhen()取得“产生此事件时的时间戳”事件产生原因:点击按钮,在列表框中选择内容,在文本框中点回车,计时器到期监听器:AdjustmentListener方法:adjustmentValueChanged事件:AdjustmentEvent● Adjustable getAdjustable()adjustable是一个接口,各种滚动条都实现了这个接口。
● int getAdjustmentType()取得滚动类型,共有UNIT_INCREMENT,UNIT_DECREMENT,BLOCK_INCREMENT,BLOCK_DECREMENT,TRACK共5种类型● int getValue()取得滚动滑块的当前值事件产生原因:滚动条的滚动监听器:ItemListener方法:itemStateChanged事件:ItemEvent● Objedt getItem()取得被选中的元素。
注意,返回值是Object,还应该进行强制类型转换。
● ItemSelectable getItemSelectable()ItemSelectable是一个接口,代表那些包含了n个可供选择的子元素的对象。
此方法返回产生此事件的对象。
此方法的作用主要在于,如果一个列表框是允许多选的,那么上面的方法就不好用了,应该用此方法得到列表对象,再取得被选中的多个元素。
● int getStateChange()取得选择的状态,是SELECTED还是DESELECTED事件产生原因:各种按钮的点击,列表框的选择监听器:FocusListener方法:focusGained、focusLost事件:FocusEvent● Component getOppositeComponent()得到“参与焦点变换的”另一个对象。
Swing常用控件
作业1:实现计算器程序界面
提示:计算器界面分为两个部分,文本框和 键盘区。对于键盘区,使用网格布局非常方 便。
作业2 测试密码是否正确
任务:输入用户名和密码,如果正确则正常登 录,否则,登录失败。 提升: 记录用户登录次数,如果超过指定次数,则 在一定时间内不能进行登录。
复选框和单选按钮
复选框和单选按钮具有很多相似的地方,它 们在实际开发中也经常要使用到。例如需要 用户来选择兴趣爱好时,一般都很少是只有 一个爱好的,这里就可以创建复选框来实现 其功能,来让用户进行多项选择操作。 但是例如性别等信息,是不可能存在多个选 择的,它只能在有限的几个选项中选择其中 一个,这里就可以使用单选按钮。
因此swing为菜单的开发提供了良好的支持通过swing中提供的菜单系列控件好的支持通过swing中提供的菜单系列控件开发人员可以非常方便地开发出各种各样的菜单本节将对swing中菜单的开发进行详细的介绍
Swing常用控件
如果在超市中只卖一种商品,那就会非常单 一的。在上一章学习布局管理器时就有这样 的感觉,都是使用按钮控件来进行举例说明, 这就好像超市中只卖一种商品。 在本章中就来为超市中提供更多的商品,在 Swing中也就是更多的控件。控件是使界面内 容丰富的一个必不可少的一部分,在Swing中 的控件除了按钮之外,还包括文本框、复选 框、单选按钮和菜单等很多内容。
菜单(JMenu)是标题栏下面的一行文字部分。 菜单是应用程序中最常用的组件。菜单的组 织方式为:一个菜单条JMenuBar包含多个菜 单项(JMenuItem)。JMenuItem有两个子类, 分别为JRadioButtonMenuItem及 JCheckBoxMenuItem用于表示单选菜单项和复 选菜单项。当用户选择某个菜单项后,就会 触发一个ActionEvent时间,由 ActionListener监听器处理。
JavaSwing中处理各组件事件的一般步骤完整版
J a v a S w i n g中处理各组件事件的一般步骤集团标准化办公室:[VV986T-J682P28-JP266L8-68PNN]Java Swing中处理各组件事件的一般步骤是:1.新建一个组件(如JButton)。
2.将该组件添加到相应的面板(如JPanel)。
3.注册监听器以监听事件源产生的事件(如通过ActionListener来响应用户点击按钮)。
4.定义处理事件的方法(如在ActionListener中的actionPerformed中定义相应方法)。
以上步骤我们可以用多种方法实现。
但人们通常用二种方法。
第一种方法是只利用一个监听器以及多个if语句来决定是哪个组件产生的事件;第二种方法是使用多个内部类来响应不同组件产生的各种事件,其具体实现又分两种方式,一种是匿名内部类,一种是一般内部类。
为了说明如何使用上述三种方法实现事件的处理方法,我们建立一个简单的应用程序。
该程序界面有两个按钮,当用户点击相应的按钮,就会弹出一个对话框显示相应的内容。
通过这个简单程序,你可以实现自己更多、更复杂的用户界面程序。
首先,我们利用单个监听器来实现该程序。
我们定义一个名为Simple1的类来包括所有代码。
所有的用户行为(如点击按钮)由一个监听器SimpleListenner中的actionPerformed方法来处理。
以下是代码:import .*;import .*;public class Simple1{private static JFrame frame;dd(myPanel);();(true);}}让我们来看看以上代码是如何工作的。
在main方法中,我们定义了一个JFrame,然后将面板Jpanel添加到窗体中,该面板包括两个按钮。
相应的变量Frame,button1,button2定义在程序的开头部分。
在程序入口main方法中,首先新建Simple1组件,通过构造器建立用户GUI,定义一个面板Jpanle,,增加两个按钮,然后利用将两个按钮加入到一个活动监听器SimpleLister中,最后,两个按钮添加到面板。
JavaSwing实战(二)下拉菜单组件JComboBox及其事件监听
JavaSwing实战(⼆)下拉菜单组件JComboBox及其事件监听接下来给”数据源配置“⾯板添加下拉框。
/*** @author: lishuai* @date: 2018/11/26 13:51*/public class WeimingSyncApplets {public static void main(String[] args) {// ⾯板组件JPanel taskPanel = new JPanel();JPanel dbPanel = new JPanel();JTabbedPane tabbedPane = buildJTabbedPane(taskPanel, dbPanel);buildFrame(tabbedPane);}private static JTabbedPane buildJTabbedPane(JPanel taskPanel, JPanel dbPanel) {// 选项卡⾯板JTabbedPane tabbedPane = new JTabbedPane();// 通过BorderFactory来设置边框的特性tabbedPane.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));tabbedPane.add("执⾏任务", taskPanel);tabbedPane.add("数据源配置", dbPanel);dbPanel.add(buildJLabel("数据库类型", 10, 20, 80, 25));String dbs[] = {"mysql", "oracle", "sqlserver"};dbPanel.add(buildJComboBox("mysql", "mysql", dbs, 0, 100, 20, 165, 25));return tabbedPane;}private static void buildFrame(JComponent component) {// 窗体容器JFrame frame = new JFrame("数据同步⼯具");frame.add(component);// JFrame.EXIT_ON_CLOSE 退出// JFrame.HIDE_ON_CLOSE 最⼩化隐藏frame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);// 设置布局frame.getContentPane().setLayout(new BorderLayout());frame.getContentPane().add(BorderLayout.CENTER, component);// 设置窗⼝最⼩尺⼨frame.setMinimumSize(new Dimension(1060, 560));// 调整此窗⼝的⼤⼩,以适合其⼦组件的⾸选⼤⼩和布局frame.pack();// 设置窗⼝相对于指定组件的位置frame.setLocationRelativeTo(null);frame.setVisible(true);// 设置窗⼝尺⼨是否固定不变frame.setResizable(true);}private static JComboBox buildJComboBox(Object selectedItem, String name, String[] elements, int selectedIndex, int x, int y, int width, int height) {DefaultComboBoxModel codeTypeModel = new DefaultComboBoxModel();// elements 下拉框中的选项for (String element : elements) {codeTypeModel.addElement(element);}JComboBox codeTypeBox = new JComboBox(codeTypeModel);codeTypeBox.setName(name);// 默认选中的下拉框选项codeTypeBox.setSelectedItem(selectedItem);// codeTypeBox.setSelectedItem(selectedIndex);codeTypeBox.setBounds(x, y, width, height);// 添加下拉框事件监听器codeTypeBox.addItemListener(new ItemListener() {@Overridepublic void itemStateChanged(ItemEvent e) {if (e.getStateChange() == ItemEvent.SELECTED) {// 选择的下拉框选项System.out.println(e.getItem());}}});return codeTypeBox;}private static JLabel buildJLabel(String name, int x, int y, int width, int height) {JLabel label = new JLabel(name);label.setBounds(x, y, width, height);return label;}}效果如下:下拉框选中对象改变时,监听器监听到事件:。
swing组件及事件
SwingX终于发布了1.6.1版本,与1.6正式版的发布已相隔7个月之久!7.1 Swing入门Swing是一个带有丰富组件的图形用户界面GUI(Graphical User Interfaces)工具包,是Sun 公司在Java 1.2中推出的新的用户界面库。
Swing相对于Java 1.0推出的AWT来说,Swing 不仅仅是AWT所提供的组件的替代品,Swing的功能更强大,使用更方便。
Swing继承AWT,Swing中的类是纯Java编写的,不依赖任何具体的操作系统,可以跨平台使用。
Javax.swing包中有4个最重要的类,它们是JFrame、JApplet、JDialog、JComponent类。
同时Swing提供了40多个组件,Swing的所有组件都是以字母“J”开头,如JButton,JCheckBox 等。
Swing中的JApplet、JFrame、JDialog组件属于顶层容器组件。
在顶层容器下是中间容器,它们是用于容纳其他的组件的组件,如JPanel、JScrollPane等面板组件都是中间容器。
其他组件JButton、JCheckBox等基础组件必须通过中间容器放入顶层容器中。
7.2 Swing的几个重要类7.2.1 JFrame框架JFrame是带标题的顶层窗口。
Swing组件不能直接添加到顶层容器中,它必须通过与Swing顶层容器相关联的内容面板(content pane)来添加组件。
对JFrame添加组件有两种方式:1. 用getContentPane()方法获得JFrame的内容面板,再对其加入组件。
2. 建立一个JPanel之类的中间容器,把组件添加到中间容器中,用setContentPane()方法把该容器置为JFrame的内容面板。
JFrame常用的构造函数为:JFrame() 建立一个没有标题的窗口。
JFrame(String title) 建立一个指定标题的窗口。
Java Swing中处理各组件事件的一般步骤
Java Swing中处理各组件事件的一般步骤是:1.新建一个组件(如JButton)。
2.将该组件添加到相应的面板(如JPanel)。
3.注册监听器以监听事件源产生的事件(如通过ActionListener来响应用户点击按钮)。
4.定义处理事件的方法(如在ActionListener中的actionPerformed中定义相应方法)。
以上步骤我们可以用多种方法实现。
但人们通常用二种方法。
第一种方法是只利用一个监听器以及多个if语句来决定是哪个组件产生的事件;第二种方法是使用多个内部类来响应不同组件产生的各种事件,其具体实现又分两种方式,一种是匿名内部类,一种是一般内部类。
为了说明如何使用上述三种方法实现事件的处理方法,我们建立一个简单的应用程序。
该程序界面有两个按钮,当用户点击相应的按钮,就会弹出一个对话框显示相应的内容。
通过这个简单程序,你可以实现自己更多、更复杂的用户界面程序。
首先,我们利用单个监听器来实现该程序。
我们定义一个名为Simple1的类来包括所有代码。
所有的用户行为(如点击按钮)由一个监听器SimpleListenner中的actionPerformed方法来处理。
以下是代码:import java.awt.*;import java.awt.event.*;import javax.swing.*;public class Simple1{private static JFrame frame; // 定义为静态变量以便main使用private static JPanel myPanel; // 该面板用来放置按钮组件private JButton button1; // 这里定义按钮组件private JButton button2; // 以便让ActionListener使用public Simple1() // 构造器, 建立图形界面{// 新建面板myPanel = new JPanel();// 新建按钮button1 = new JButton("按钮1"); // 新建按钮1button2 = new JButton("按钮2");SimpleListener ourListener = new SimpleListener();// 建立一个actionlistener让两个按钮共享button1.addActionListener(ourListener);button2.addActionListener(ourListener);myPanel.add(button1); // 添加按钮到面板myPanel.add(button2);}private class SimpleListener implements ActionListener{public void actionPerformed(ActionEvent e){// 利用getActionCommand获得按钮名称// 也可以利用getSource()来实现// if (e.getSource() ==button1)String buttonName = e.getActionCommand();if (buttonName.equals("按钮1"))JOptionPane.showMessageDialog(frame,"按钮1 被点击");else if (buttonName.equals("按钮2"))JOptionPane.showMessageDialog(frame,"按钮2 被点击");elseJOptionPane.showMessageDialog(frame,"Unknown event" );}}public static void main(String s[]){Simple1 gui = new Simple1(); // 新建Simple1组件frame = new JFrame("Simple1"); // 新建JFrame// 处理关闭事件的通常方法frame.addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e){System.exit(0);} });frame.getContentPane().add(myPanel);frame.pack();frame.setVisible(true);}}让我们来看看以上代码是如何工作的。
Java Swing编程-3
本章任务
完成超市管理系统的登录验证
本章目标
了解Swing的事件处理机制 掌握使用ActionListener实现监听
JButton JMenuItem
掌握使用ItemListener实现以下监听
JRadioBox JComboBox
事件处理机制
事件授权处理机制:对组件注册事件监听,当有某 个动作触发了这个该事件后,Java运行时系统将调 用对应的方法响应该操作。
实现JCombox事件
修改T13中的案例,当我们修改了学历的时候, 能得到修改后的学历值
实现JCombox事件
实现思路与JRadionButton的是一样的,也 通过ItemEvent事件来实现
但稍微不同的是, JCombox是在同一个组件 上的选项值发生了变化,为了避免两次状态 转变的触发效果,所以我们在得到值的时候 要进行判断
T 14
Swing编程3 实现事件监听
回顾
1. 如何实现性别(男,女)单选按钮? 2. 如何实现下拉框选项?创建方式有那几 种? 3. 窗体中的菜单有那几部分组成?他们之 间的关系是什么? 4. 如何将一个菜单栏添加到一个窗体中?
预习检查
1.常用的事件类型有那几种? 2.如何实现事件监听,请描述下实现思路?
ActionEvent
ActionEvent事件是激活事件,当在单击 JButton,JMenuItem,JList组件的时候触发该 事件; 该事件中提供的常用方法
public object getSource( )
• 返回触发该事件的对象
public String getActionCommand( )
• 返回触发该事件的对象内容text;
ActionEvent
2018.4.27Java的Swing常用事件
2018.4.27Java的Swing常⽤事件Swing常⽤事件1.Java Swing中处理事件的⼀般步骤是:(1)新建⼀个组件(JButton)(2)将该组件添加到⾯板中(JPanel)(3)注册监听器以监听事件源产⽣的事件(如ActionListener来响应客户点击按钮事件)(4)定义处理事件的⽅法(如在ActionLinstener中的actionPerform中定义响应的⽅法)以上步骤我们可以⽤多种⽅法实现,⽤的最多的是第⼆种第⼀种⽅法是只利⽤⼀个监听器以及多个if语句来决定是哪个组件产⽣的事件;第⼆种⽅法是使⽤多个内部类来响应不同组件产⽣的各种事件,其具体实现⼜分两种⽅式,⼀种是匿名内部类,⼀种是⼀般内部类。
package jf;import java.awt.FlowLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JTextField;public class Tets extends JFrame{JButton btn;JPanel panel;JTextField text;private static final String TIP = "QQ号码/⼿机/邮箱";//初始化窗⼝public void init(){this.setTitle("Test");this.setSize(300,300);this.setLocationRelativeTo(null);this.setResizable(true);}//构造⽅法public Tets() {init();text = new JTextField("qq",20);btn = new JButton("提交");btn.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent event) {//点击弹框显⽰JOptionPane.showMessageDialog(null, "提交失败");System.out.println("hhhh");}});this.getContentPane().setLayout(new FlowLayout());this.getContentPane().add(text);this.getContentPane().add(btn);this.setVisible(true);}public static void main(String[] args) {new Tets();}}2.ActionListener(按钮点击事件)在⽂本框⾥⾯显⽰隐式字符package jf;import java.awt.BorderLayout;import java.awt.Color;import ponent;import java.awt.event.MouseEvent;import java.awt.event.MouseListener;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.JTextField;public class Hint extends JFrame implements MouseListener{private static final long serialVersionUID = 1L;private static final String TIP = "QQ号码/⼿机/邮箱";public Hint (){setTitle ("test");setLayout (new BorderLayout ());final JTextField tf = new JTextField (TIP);tf.setName ("tf");tf.setForeground (Color.gray);tf.setLocation (0, 0);tf.setSize (100, 30);tf.addMouseListener (this);JPanel panel = new JPanel ();panel.setName ("panel");panel.addMouseListener (this);panel.setLayout (null);panel.add (tf);panel.setFocusable (true);add (panel);setSize (300, 300);setLocationRelativeTo (null);setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);setVisible (true);}public static void main ( String[] args ){new Hint ();}public void mouseClicked ( MouseEvent e ){Component component = e.getComponent ();String name = component.getName ();if (e.getButton () == MouseEvent.BUTTON1){if ("tf".equals (name)){JTextField tf = (JTextField) component;if (TIP.equals (tf.getText ())){tf.setText ("");}}else if ("panel".equals (name)){JTextField tf = (JTextField) ( (JPanel) component ).getComponents ()[0]; if ("".equals (tf.getText ())){tf.setText (TIP);}}}}public void mousePressed ( MouseEvent e ){}public void mouseReleased ( MouseEvent e ){}public void mouseEntered ( MouseEvent e ){}public void mouseExited ( MouseEvent e ){}}密码JTextField textField = new JTextField("密码");textField.addFocusListener(new FocusAdapter() { @Overridepublic void focusLost(FocusEvent e) {if (textField.getText().isEmpty()){textField.setText("密码");}}});。
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)通常是用来标识另外一个组件的含义。
以在标签上显示文字、图象或是文字图象的组合。
SwingT组件及事件处理
六、布局
Java提供以下几种布局管理器:流布局(Fl-ow Layout)、边界布局(BorderLayout)、网格布局(Gr idLayout)、网格包布局(GridBagLayout)、卡片布 局(CardLayout)和手工布局。 Panel、Applet的默认布局为流布局, Windo w、Frame的默认布局为边界布局。容器可以使用方 法:setLayout(布局对象);来设置自己的布局。
四、图形组件类的继承关系(补充知识)
Button
Canvas Checkbox
Dialog
FileDialog
Choice
Object
Component
Window
Frame
Container
Label Scrollbar List
Pane
ScrollPane
TextArea TextComponent TextField
一、 JFrame类
4.public void setSize(int width,int height) 设置窗口的大小,窗口在屏幕出现是默 认位置是(0,0)。 5.public void setVisible(boolean b) 设 置窗口是可见还是不可见,窗口默认是不可见的。 6.public void setResizable(boolean b) 设置窗口是否可调整大小,窗口默认是可调整大小 的。
五、事件处理机制
1、基本概念 (1)事件源:能够产生事件的对象都可以成为事件 源,如文本框、按钮、下拉式列表等。也就是说, 事件源必须是一个对象,而且这个对象必须是Java 认为能够发生事件的对象。 (2)监视器:事件处理需要一个对象对事件源进行 监视,以便对发生的事件作出处理。事件源通过调 用相应的方法将某个对象作为自己的监视器。例如, 对于文本框,这个方法是: addActionListener(监视器); 创建该监视器对象的类必须声明实现相应的接口 , 一个监听器对象是一个实现了专门的监听器接口的 类的实例(对象)。
第07章常用swing元件与事件处理
7.3.2 JTextField(單行文字欄位)
文字欄位可以顯示訊息,可以讓使用者透過鍵盤做資料輸入或修
改的動作。單行文字欄位物件的建立要使用swing套件的JTextField 類別來宣告,一樣要使用JFrame的add()方法,才能放入視窗物件
中。
swing套件提供了三種文字欄位,分別是JTextField類別的單行 文字欄位、JTextArea類別的多行文字欄位、JPasswordField類別 的密碼文字欄位。本章先只介紹單行文字欄位的JTextField類別,該 類別的建構子如下: ① JTextField():建立空白的單行文字欄位物件。 ② JTextField(String text):建立並顯示text文字字串的單行文字欄 位物件。
1. 行04:建立第一個文字欄位物件txtInput,並顯示文字 "0"。 2. 行07:建立第二個文字欄位物件txtArea,沒有顯示文字。 3. 行09:設定文字欄位物件txtArea不能編輯,即不能由鍵盤輸 入資料。
7.3.3 JButton(按鈕)
按鈕是圖形使用介面最常用的元件,用來確認所要執行
「1 坪 = 3.3 平方公尺」。
3. 行05:設定標籤物件lbl1放入視窗物件內的位置與大小。其位置 的參考點是視窗內部的左上角座標為(0, 0)。
4. 行06:將標籤物件lbl1納入視窗物件frame1內。
5. 行07:建立第二個標籤物件lbl2,並設定顯示文字「輸入坪 數:」。
6. 行11:在建立的frame1視窗物件中,設定不使用任何的版面配置
第 07 章
常用swing元件與事件處理
7.1 7.2 7.3 7.4 7.5
視窗應用程式簡介 JFrame類別 常用的swing元件 事件處理與傾聽者 鍵盤事件
java_swing面试题目(3篇)
第1篇一、Java Swing基本概念1. 什么是Java Swing?答:Java Swing是一种用于创建图形用户界面的库,它是Java语言的一个扩展,允许开发者创建具有丰富视觉效果的桌面应用程序。
2. Swing的组件有哪些?答:Swing组件包括基本组件(如按钮、标签、文本框等)、容器组件(如面板、窗口、滚动条等)、特殊组件(如树、表格等)。
3. Swing与AWT的区别是什么?答:Swing是基于Java的,而AWT是基于本地平台的。
Swing组件在不同平台上表现一致,而AWT组件在不同平台上可能有所不同。
Swing运行速度较慢,但提供了更多功能和更好的用户体验。
二、Swing基本组件1. 如何创建一个按钮,并设置其文本和字体?答:使用JButton类创建按钮,并设置其文本和字体。
```javaJButton button = new JButton("按钮");button.setFont(new Font("宋体", Font.PLAIN, 12));```2. 如何获取并设置文本框中的文本?答:使用JTextField类创建文本框,并通过getText()和setText()方法获取和设置文本。
```javaJTextField textField = new JTextField();String text = textField.getText(); // 获取文本textField.setText("新文本"); // 设置文本```3. 如何使用单选按钮(JRadioButton)实现多选?答:使用JRadioButton类创建单选按钮,并使用ButtonGroup类将它们分组。
```javaJRadioButton radioButton1 = new JRadioButton("选项1");JRadioButton radioButton2 = new JRadioButton("选项2");ButtonGroup buttonGroup = new ButtonGroup();buttonGroup.add(radioButton1);buttonGroup.add(radioButton2);```4. 如何使用复选框(JCheckBox)实现多选?答:使用JCheckBox类创建复选框,它们之间互不影响。
java语言中awt和swing组件的基本用法
java语言中awt和swing组件的基本用法Java语言中AWT和Swing组件是用于创建图形用户界面(GUI)的工具。
AWT(Abstract Window Toolkit)是Java最早提供的GUI工具包,而Swing是在AWT基础上进行了扩展和改进的高级GUI工具包。
本文将介绍AWT和Swing组件的基本用法。
一、AWT组件的基本用法AWT组件是Java中最基本的GUI组件,它们在不同的平台上都能够保持一致的外观和行为。
下面是AWT常用组件的基本用法:1. Frame(窗口):使用Frame类可以创建一个基本的窗口。
可以调用setTitle()方法设置窗口标题,setSize()方法设置窗口大小,setVisible()方法显示窗口。
例如:```javaFrame frame = new Frame("My Window");frame.setSize(400, 300);frame.setVisible(true);```2. Panel(面板):Panel是一个容器,用于存放其他组件。
可以使用add()方法将其他组件添加到Panel中。
例如:```javaPanel panel = new Panel();Button button = new Button("Click Me");panel.add(button);```3. Button(按钮):Button用于触发特定的动作。
可以使用addActionListener()方法为按钮添加动作监听器。
例如:```javaButton button = new Button("Click Me");button.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {System.out.println("Button Clicked");}});```4. Label(标签):Label用于显示文本信息。
常用Swing组件
JTabbedPane类的构造方法有: 类的构造方法有: 类的构造方法有 JTabbedPane() 创 建 空 对 象 , 该 对 象 具 有 缺 省 的 标 签 位 置 JTabbedPane.TOP 和缺省的布局策略JTabbedPane.WRAP_TAB_LAYOUT。 。 和缺省的布局策略 JTabbedPane(int tabPlacement)创建空对象,该对象具有指定 创建空对象, 创建空对象 的标签位置:JTabbedPane.TOP、JTabbedPane.BOTTOM、 的标签位置: 、 、 JTabbedPane.LEFT 或 JTabbedPane.RIGHT 以 及 缺 省 的 布 局策略JTabbedPane.WRAP_TAB_LAYOUT。 局策略 。 JTabbedPane(int tabPlacement, int tabLayoutPolicy)创建空对 创建空对 象 , 该对象具有指定的标签位置和布局策略。 布局策略可 该对象具有指定的标签位置和布局策略 。 以是以下两种之一: 以是以下两种之一 : JTabbedPane.WRAP_TAB_LAYOUT 或 JTabbedPane.SCROLL_TAB_LAYOUT。加滚动条 。
javax.swing.JPane 类继承于 类继承于javax.swing.JComponent 类 , 其构 造 其 构造 方法有: 方法有: JPanel() 创建具有缺省 创建具有缺省FlowLayout布局的 布局的JPanel对象。 对象。 布局的 对象 JPanel(LayoutManager layout) 创 建 具 有 指 定 布 局 管 理 器 的 JPanel对象。 对象。 对象 作为画布的绘画区域使用时, 将JPanel作为画布的绘画区域使用时, 要使用下面的两个步骤 : 作为画布的绘画区域使用时 要使用下面的两个步骤: 首先,设置画布绘图区域的大小;其次,使 用 paintComponent()方法 ( 不是 方法( 方法) 方法 不是paint()方法) 来绘图 , 在该方法 方法 来绘图, 体中, 首先调用方法super.paintComponent( ) 来清除显示区 体中 , 首先调用方法 ( 域。
Java+Swing+常用事件和监听器接口
Swing 常用事件和监听器接口AncestorEvent AncestorListener ancestorAdded(AncestorEvent e)ancestorMoved(AncestorEvent e)ancestorRemoved(AncestorEvent e) CaretEvent 通知感兴趣的参与者事件源中的文本插入符已经发生更改CaretListener caretUpdate(CareEvente)ChangeEvent 通知感兴趣的参与者事件源中的状态已经发生更改ChangeListener stateChanged(ChangeEvent e)HyperlinkEvent 通知感兴趣的参与者发生了与超文本链接有关的事情HyperlinkListener hyperlinkUpdate(HyperlinkEvent e)InternalFrameEvent 以事件源的形式添加对JInternalFrame对象的支持的A WTEvent InternalFrameListener internalFrameActivated(InternalFrameEvent e)internalFrameClosed(InternalFrameEvent e)internalFrameClosing(InternalFrameEvent e)internalFrameDeactived(InternalFrameEvent e)internalFrameDeiconified(InternalFrameEvent e)internalFrameIconified(InternalFrameEvent e)internalFrameOpened(InternalFrameEvent e)ListDataEvent 定义一个列表更改的事件ListDataListener contentsChanged(ListDataEvent e)intervalAdded(ListDataEvent e)intervalRemoved(ListDataEvent e)ListSelectEvent 表明当前选择项更改的事件ListSelectListener valueChanged(ListSelectEvent e)MenuDrageMouseEv ent 通知感兴趣的参与者菜单元素在拖动条件下已经接受转发给它的MouseEventMenuDrageMouseListenermenuDragMouseDragged(MenuDrageMouseEvent e)menuDragMouseEntered(MenuDrageMouseEvente)menuDragMouseExited(MenuDrageMouseEvente)menuDragMouseReleased(MenuDrageMouseEvent e)MenuEvent 通知感兴趣的参与者作为事件源的菜单已经被发送、选定或取消MenuListener menuCanceled(MenuEvent e)menuDeselected(MenuEvent e)menuSelected(MenuEvent e)MenuKeyEvent 通知感兴趣的参与者菜单元素已经在菜单树中接收给它的KeyEvent MenuKeyListener menuKeyPressed(MenuKeyEvent e)menuKeyReleased(MenuKeyEvent e)menuKeyTyped(MenuKeyEvent e)PopupMenuEvent 只包含事件源。
Swing常用组件
Swing对话框-JDialog
• 对话框也是编写GUI程序中经常使用到的顶 层容器。 • JDialog类扩展了java.awt.Dialog类。下 面使用JDialog创建了一个最简单的对话框, 代码如下:
JDialog区分模式对话框和非模式对话框
• 非模式对话框允许用户同时在对话框和程 序的主窗口中输入信息; • 模式对话框在处理完之前不能与程序的主 窗口进行交互。 • 创建一个模式对话框的代码如下:
宿主平台的窗口系统所提供的代码,是轻量级组件
(light weight components)。
Swing的一部分重要特点
• • • • • Swing组件独立于本地窗口系统 Swing组件可以在任何支持AWT的平台系统中运行 Swing完全用Java来执行许多传统的AWT组件 Swing与AWT兼容并且Swing组件能够与AWT组件交 换使用 Swing提供的GUI控件的数量和质量是其他任何GUI 工具包都不可比拟的 Swing拥有一套丰富的、友好的界面元素 在不同的平台上,Swing提供了一致的用户体验 对于Sun公司的“一次编写,到处运行”的理念, Swing将它变成了现实。
Java事件类及其继承关系
Swing中组件的继承关系
Swing组件和容器
• JComponent是一个抽象类,用于定义所有子类组 件的一般方法,其类层次结构如下所示。 ng.Object | +ponent | +--java.awt.Container | +--javax.swing.JComponent • 并不是所有的Swing组件都继承于JComponent类, JComponent类继承于Container类,所以,凡是此 类的组件都可作为容器使用。
javaSwing事件监听
1 事件处理对于采用了图形用户界面的程序来说,事件控制是非常重要的;到目前为止,我们编写的图形用户界面程序都仅仅只是完成了界面,而没有任何实际的功能,要实现相应的功能,必须进行事件处理;用户与GUI组件进行交互就会发生事件,如:按下一个按钮、用键盘输入一个字符、点击鼠标等等;当前我们要关注的并不是“事件是如何产生的”,而是讨论当发生事件后,我们应当“如何处理之”。
事件处理模型Java中,事件处理的基本思路如下:一个源(事件源)产生一个事件(事件对象)并把它送到监听器那里,监听器只是简单地等待,直到它收到一个事件,一旦事件被接受,监听器将处理这些事件;一个事件源必须注册监听器以便监听器可以接受关于一个特定事件的通知。
当在一个图形用户界面点击鼠标或者按下键盘时,都是针对于具体组件而发生的动作,如:使用鼠标点击某个按钮;按下键盘向文本框输入内容等等;我们把动作所操纵的对象称为事件源,请注意:事件源一定是指某个组件;当针对于事件源发生动作时,就会产生一个事件。
针对每一类型的事件,都有与之相对应的监听器,用于监听事件的发生;在Java中,监听器由一系列接口来提供;实际上,事件监听器就是实现了事件监听接口的类,监听器不断监听事件源的动作,当事件源产生一个事件后,监听器接收到事件源的通知,就调用特定的方法,以执行指定的动作。
特定的事件监听器只对特定的事件感兴趣。
java.awt.event包中包含了一系列与事件处理相关的类和接口,其中包括:监听器接口,事件对象和事件适配器等;一般来说,编写图形用户界面程序都必须显式地导入此包;每种事件监听器接口都是以类似于XxxListener的形式来命名的,如:ActionListener、MouseListener、ItemListener等;ActionListener接口按钮被点击是图形编程中最普遍的事件,我们经常要处理;ActionListener被称为活动监听器,一般用来监听按钮的点击事件;该接口中包含有一个抽象方法,原型如下:public void actionPerformed(ActionEvent ae);实现该监听器接口必须重写上面的方法。