程序基础及设计 4_第1页
程序基础及设计 4_第2页
程序基础及设计 4_第3页
程序基础及设计 4_第4页
程序基础及设计 4_第5页
已阅读5页,还剩61页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

单元7图形用户界面Java程序设计基础教程(AI助学)(慕课版)人民邮电出版社热爱烘焙的美食家经常使用手机上的烘焙应用程序来查找食谱和记录烘焙笔记,然而有些应用程序的界面设计简洁明了、易于操作,而有些则难以令人满意。通过学习本单元内容,可以掌握Java中的GUI开发技术,设计和开发出自己心仪的烘焙应用程序界面。通过本单元的学习,读者可以掌握Swing顶级容器(如JFrame和JDialog),构建应用程序的主窗口和对话框;掌握不同的布局管理器(如FlowLayout和GridLayout),合理地排布界面上的组件;了解事件处理机制,使应用程序能够响应用户的操作;熟悉常用组件(如按钮、文本框和表格),增强应用程序的交互性和用户友好性。本章导读Thechapter’sintroduction目录导航7.1

Swing简介7.2

Swing顶级容器7.3

Swing布局7.4

Swing常用组件7.5事件处理机制7.6

【商业实例】“银行提款机”项目——实现操作界面7.7

【综合实训】使用GUI实现一个计算器7.1Swing简介Swing是Java的一部分,是Java的GUI工具包。包括按钮、文本框、标签、表格、下拉列表等。Swing提供了丰富的定制选项,开发者可以根据需要轻松定制界面的外观和行为,满足各种设计需求Swing还提供了强大的事件处理机制,可以捕获和响应用户的各种操作,实现交互式的GUI在JavaGUI编程中,Swing被视为一个强大的工具,为开发者提供了广泛的选择和灵活性Swing为开发者提供了一种高效、灵活、跨平台的GUI开发方式,使具有GUI的应用程序的开发变得相对简单Swing还支持丰富的布局管理器,可以帮助开发者灵活地安排界面元素,适应不同大小和分辨率的屏幕Swing可以在不同的操作系统上保持一致的外观和行为,确保应用程序在各种平台上都能提供相似的用户体验7.1Swing简介Swing的组件都继承了Container类,基本上可以分为容器分支(Window分支)和组件分支(JComponent分支)。容器分支是为了实现GUI窗口和对话框而设计的,组件分支是为了实现向容器中填充数据、元素和完成更多的交互而设计的。Container的主要分支如图7.1所示。图7.1Container的主要分支目录导航7.1

Swing简介7.2

Swing顶级容器7.3

Swing布局7.4

Swing常用组件7.5事件处理机制7.6

【商业实例】“银行提款机”项目——实现操作界面7.7

【综合实训】使用GUI实现一个计算器7.2.1JFrame1.创建JFrame可以通过创建JFrame类的实例来新建一个窗口。示例代码如下。JFrameframe=newJFrame();2.设置标题可以使用setTitle(String)方法为窗口设置标题。示例代码如下。frame.setTitle("MyApplication");3.设置默认关闭操作默认情况下,单击窗口的关闭按钮时,只会隐藏窗口,而不会退出应用程序。可以使用setDefaultCloseOperation(int)方法改变此行为。示例代码如下。frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);/*单击关闭按钮时退出应用程序*/7.2.1JFrame4.设置大小可以使用setSize(int,int)方法设置窗口的大小。设置窗口的宽度为400像素、高度为300像素的代码如下。frame.setSize(400,300);5.设置可见性默认情况下,新创建的JFrame是不可见的。可以使用setVisible(boolean)方法显示或隐藏窗口。示例代码如下。frame.setVisible(true);//显示窗口6.添加组件可以使用add(Component)方法将Swing组件添加到JFrame中。示例代码如下。frame.add(newJButton("ClickMe!"));//在窗口中添加一个按钮7.2.1JFrame使用JFrame创建一个简单的GUI窗口。importjavax.swing.JFrame;importjavax.swing.JButton;publicclassMyFrame{publicstaticvoidmain(String[]args){//创建一个新的JFrame实例

JFrameframe=newJFrame();//设置窗口的标题

frame.setTitle("MyJFrameExample");//设置窗口的大小

frame.setSize(500,400);//设置窗口的默认关闭操作

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//添加一个按钮到JFrame中

JButtonbutton=newJButton("ClickMe!");frame.add(button);//设置窗口为可见

frame.setVisible(true);}}7.2.2JWindow1.创建JWindow可以通过创建JWindow类的实例来新建一个无边框窗口。示例代码如下。JWindowwindow=newJWindow();2.设置大小可以使用setSize(int,int)方法设置窗口的大小。设置窗口的宽度为300像素、高度为200像素的代码如下。frame.setTitle("MyApplication");3.设置可见性默认情况下,新创建的JWindow是不可见的,可以使用setVisible(boolean)方法显示或隐藏窗口。示例代码如下。window.setVisible(true);//显示窗口7.2.2JWindow4.添加组件可以使用add(Component)方法将Swing组件添加到JWindow中。示例代码如下。window.add(newJLabel("Hello,JWindow!"));//在窗口中添加一个标签使用JWindow创建一个简单的GUI窗口。importjavax.swing.JWindow;importjavax.swing.JLabel;importjavax.swing.SwingUtilities;publicclassMyWindow{publicstaticvoidmain(String[]args){SwingUtilities.invokeLater(newRunnable(){publicvoidrun(){//创建一个新的JWindow实例

JWindowwindow=newJWindow();//设置窗口的大小window.setSize(300,200);//添加一个标签到JWindow中

window.getContentPane().add(newJLabel("Hello,JWindow!",JLabel.CENTER));//设置窗口为可见

window.setVisible(true);}});}}7.2.3JDialog1.创建JDialog可以通过创建JDialog类的实例来新建一个对话框。示例代码如下。JDialogdialog=newJDialog();2.设置标题可以使用setTitle(String)方法为对话框设置标题。示例代码如下。dialog.setTitle("MyDialog");3.设置模态可以使用setModal(boolean)方法设置对话框是否为模态对话框。模态对话框会阻止用户对其他窗口进行操作,只有关闭对话框后,用户才能操作其他窗口。示例代码如下。dialog.setModal(true);7.2.3JDialog4.设置大小可以使用setSize(int,int)方法设置对话框的大小。设置对话框的宽度为300像素、高度为200像素的代码如下。dialog.setSize(300,200);5.设置可见性默认情况下,新创建的JDialog是不可见的。可以使用setVisible(boolean)方法显示或隐藏对话框。示例代码如下。dialog.setVisible(true);//显示对话框6.添加组件可以使用add(Component)方法将Swing组件添加到JDialog中。示例代码如下。dialog.add(newJLabel("Hello,JDialog!"));//在对话框中添加一个标签7.2.3JDialog使用JDialog创建一个简单的模态对话框。importjavax.swing.JDialog;importjavax.swing.JLabel;importjavax.swing.SwingUtilities;publicclassMyDialog{publicstaticvoidmain(String[]args){SwingUtilities.invokeLater(newRunnable(){publicvoidrun(){//创建一个新的JDialog实例

JDialogdialog=newJDialog();//设置对话框的标题

dialog.setTitle("MyJDialogExample");

//设置对话框为模态对话框

dialog.setModal(true);//设置对话框的大小

dialog.setSize(300,200);//添加一个标签到JDialog中

dialog.getContentPane().add(newJLabel("Hello,JDialog!",JLabel.CENTER));//设置对话框为可见

dialog.setVisible(true);}});}}7.2.3JDialog3个容器对比,如表7.1所示。特性JFrameJWindowJDialog标题栏有无有边框有无有最小化/最大化按钮有无无关闭按钮有无有模态不支持不支持支持可容纳其他组件是是是使用场景主窗口程序弹出菜单、工具提示等接收用户输入或者显示信息表7.1JFrame、JWindow、JDialog这3个容器的对比目录导航7.1

Swing简介7.2

Swing顶级容器7.3

Swing布局7.4

Swing常用组件7.5事件处理机制7.6

【商业实例】“银行提款机”项目——实现操作界面7.7

【综合实训】使用GUI实现一个计算器7.3Swing布局布局管理是一种决定组件在容器中位置和大小的机制,在Swing组件库的设计中扮演了非常重要的角色。设计Swing的目标是创建一个能够让组件在不同屏幕分辨率和UI风格下保持合理布局的工具箱,这就需要一个强大而灵活的布局管理器。Swing提供了多种布局管理器,包括BorderLayout、GridLayout、GridBagLayout、BoxLayout、FlowLayout和CardLayout等,每种布局管理器都有其特殊的布局策略。每个Swing容器都有一个默认的布局管理器,但也可以使用其他布局管理器,甚至可以不使用布局管理器,直接通过设置组件的绝对位置和大小来管理布局。Swing的布局管理应提供足够的灵活性,以满足各种各样的布局需求,同时要尽可能地简化布局。7.3.1BorderLayoutBorderLayout(边界布局)是Swing中一个非常常用的布局管理器,它将容器划分为5个区域,分别为NORTH、SOUTH、EAST、WEST和CENTER。下面使用BorderLayout来进行边界布局。importjavax.swing.*;importjava.awt.*;publicclassBorderLayoutExample{publicstaticvoidmain(String[]args){//创建一个新的JFrame实例,并设置窗口标题

JFrameframe=newJFrame("BorderLayoutExample");//设置窗口的默认关闭操作为退出应用程序

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置窗口的大小

frame.setSize(300,200);//设置窗口的布局管理器为BorderLayoutframe.setLayout(newBorderLayout());//向BorderLayout的5个区域添加按钮组件

//BorderLayout.NORTH添加一个按钮到NORTH区域中

frame.add(newJButton("North"),BorderLayout.NORTH);//BorderLayout.SOUTH添加一个按钮到SOUTH区域中

frame.add(newJButton("South"),BorderLayout.SOUTH);//BorderLayout.EAST添加一个按钮到EAST区域中

frame.add(newJButton("East"),BorderLayout.EAST);//BorderLayout.WEST添加一个按钮到WEST区域中

frame.add(newJButton("West"),BorderLayout.WEST);//BorderLayout.CENTER添加一个按钮到CENTER区域中

frame.add(newJButton("Center"),BorderLayout.CENTER);//设置窗口为可见

frame.setVisible(true);}}在这个示例中,创建了一个窗口,并设置窗口的布局管理器为BorderLayout,分别向5个区域中添加了一个按钮。运行这个程序,会看到5个按钮分别位于窗口的顶部、底部、左边、右边和中间。运行以上代码,运行结果如图7.5所示。图7.5运行结果7.3.2GridLayoutGridLayout(网格布局)将容器分割为网格形式,每个组件都占据一个单元格,所有的单元格都是等大的,可以指定网格的行数和列数。下面使用GridLayout来进行网格布局。importjavax.swing.*;importjava.awt.*;publicclassGridLayoutExample{publicstaticvoidmain(String[]args){//创建一个新的JFrame实例,并设置窗口标题

JFrameframe=newJFrame("GridLayoutExample");//设置窗口的默认关闭操作为退出应用程序

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置窗口的大小

frame.setSize(300,200);//设置窗口的布局管理器为GridLayout,指定为3行3列

frame.setLayout(newGridLayout(3,3));//使用循环添加9个按钮到窗口中

//每个按钮的标签都是循环变量的字符串表示

for(inti=1;i<=9;i++){frame.add(newJButton(String.valueOf(i)));}//设置窗口为可见

frame.setVisible(true);}}在这个示例中,创建了一个窗口,设置其布局管理器为3行3列的GridLayout,并为其添加了9个按钮,按钮上的文本是按钮的编号。运行这个程序,会看到9个按钮均匀地分布在窗口中,形成一个3×3的网格。运行以上代码,运行结果如图7.6所示。图7.6运行结果7.3.3GridBagLayoutGridBagLayout将容器分割为网格形式,每个组件可以占用一个或多个单元格,单元格的大小可以不同,这使得组件在容器中的布局更为灵活。在GridBagLayout中,每个组件的布局都通过GridBagConstraints对象来控制,可以设置每个组件的大小、位置、填充方式、间距等属性。importjavax.swing.*;importjava.awt.*;publicclassGridBagLayoutExample{publicstaticvoidmain(String[]args){JFrameframe=newJFrame("GridBagLayoutExample");frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setSize(300,200);//设置布局管理器为GridBagLayoutframe.setLayout(newGridBagLayout());//创建GridBagConstraints对象

GridBagConstraintsconstraints=newGridBagConstraints();//添加第一个按钮

constraints.gridx=0;constraints.gridy=0;constraints.gridwidth=1;constraints.gridheight=1;constraints.fill=GridBagConstraints.BOTH;frame.add(newJButton("Button1"),constraints);//添加第二个按钮constraints.gridx=1;constraints.gridy=0;constraints.gridwidth=1;constraints.gridheight=1;constraints.fill=GridBagConstraints.BOTH;frame.add(newJButton("Button2"),constraints);//添加第三个按钮,这个按钮会占据第二行和第三行

constraints.gridx=0;constraints.gridy=1;constraints.gridwidth=1;constraints.gridheight=2;constraints.fill=GridBagConstraints.BOTH;frame.add(newJButton("Button3"),constraints);

//添加第四个按钮到第二行中

constraints.gridx=1;constraints.gridy=1;constraints.gridwidth=1;constraints.gridheight=1;7.3.3GridBagLayoutconstraints.fill=GridBagConstraints.BOTH;frame.add(newJButton("Button4"),constraints);//添加第五个按钮到第三行中

constraints.gridx=1;constraints.gridy=2;constraints.gridwidth=1;constraints.gridheight=1;constraints.fill=GridBagConstraints.BOTH;frame.add(newJButton("Button5"),constraints);frame.setVisible(true);}}在这个示例中,创建了一个窗口,并设置其布局管理器为GridBagLayout,添加了5个按钮,其中第三个按钮通过设置GridBagConstraints对象的gridheight属性值为2表示该按钮占据两行。运行以上代码,运行结果如图7.7所示。图7.7运行结果7.3.4BoxLayoutBoxLayout(盒状布局)可以让组件在单一方向(水平或垂直)上排列,创建BoxLayout的时候需要指定容器和布局方向(X_AXIS为水平方向,Y_AXIS为垂直方向)。importjavax.swing.*;publicclassBoxLayoutExample{publicstaticvoidmain(String[]args){//创建一个新的JFrame实例,并设置窗口标题

JFrameframe=newJFrame("BoxLayoutExample");//设置窗口的默认关闭操作为退出应用程序

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//创建一个BoxLayout布局管理器,指定容器(窗口的内容面板)和布局方向(垂直方向)

BoxLayoutboxLayout=newBoxLayout(frame.getContentPane(),BoxLayout.Y_AXIS);//将布局管理器应用到窗口的内容面板中

frame.setLayout(boxLayout);//向BoxLayout中添加组件(按钮)

//这些按钮将按照BoxLayout指定的方向(垂直)排列

frame.add(newJButton("Button1"));frame.add(newJButton("Button2"));frame.add(newJButton("Button3"));//根据窗口中的组件调整窗口大小

frame.pack();//设置窗口为可见

frame.setVisible(true);}}在这个示例中,创建了一个BoxLayout,并添加了3个按钮。因为设置的方向是Y_AXIS,所以这3个按钮会垂直排列。如果将方向改为X_AXIS,则这3个按钮会水平排列,此时,运行结果如图7.8所示。图7.8方向改为X_AXIS后的运行结果7.3.5FlowLayoutFlowLayout(流式布局)会按照组件添加的顺序,从左到右、从上到下地排列组件。当窗口大小改变时,FlowLayout会调整组件的位置以适应新的窗口大小。FlowLayout有3个构造方法,可以设置对齐方式和组件间距。默认的对齐方式是居中对齐(FlowLayout.CENTER),但也可以设置为左对齐(FlowLayout.LEFT)或右对齐(FlowLayout.RIGHT)。默认的组件间距是5像素。importjavax.swing.*;importjava.awt.*;publicclassFlowLayoutExample{publicstaticvoidmain(String[]args){//创建一个新的JFrame实例,并设置窗口标题

JFrameframe=newJFrame("FlowLayoutExample");//设置窗口的默认关闭操作为退出应用程序

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);/*创建一个FlowLayout布局管理器,指定对齐方式为居中对齐(FlowLayout.CENTER),组件的水平间距和垂直间距都为10像素*/FlowLayoutflowLayout=newFlowLayout(FlowLayout.CENTER,10,10);//将布局管理器应用到窗口的内容面板中

frame.setLayout(flowLayout);//向FlowLayout中添加组件(按钮)

//这些按钮将按照FlowLayout的规则进行排列,即按顺序排列,一行放不下就换行

frame.add(newJButton("Button1"));frame.add(newJButton("Button2"));frame.add(newJButton("Button3"));//根据窗口中的组件调整窗口大小

frame.pack();//设置窗口为可见

frame.setVisible(true);}}7.3.5FlowLayout在这个示例中,创建了一个FlowLayout,并设置了对齐方式为居中对齐,组件间距为10像素,然后添加了3个按钮。因为设置的对齐方式是居中对齐,所以这3个按钮会居中排列,且按钮的间距为10像素。运行以上代码,运行结果如图7.9所示,缩小窗口后的效果如图7.10所示。图7.9运行结果图7.10缩小窗口后的效果7.3.6CardLayoutCardLayout(卡片布局)允许同一个位置显示多个组件,但是一次只能看到一个组件。这就像一叠卡片,可以翻动这些卡片,但是一次只能看到一个卡片。下面使用CardLayout来进行卡片布局。importjavax.swing.*;importjava.awt.*;importjava.awt.event.*;publicclassCardLayoutExample{publicstaticvoidmain(String[]args){//创建一个新的JFrame实例,并设置窗口标题

JFrameframe=newJFrame("CardLayoutExample");//设置窗口的默认关闭操作为退出应用程序

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置窗口的大小

frame.setSize(300,200);//创建一个CardLayout布局管理器和一个JPanel来容纳卡片

CardLayoutcardLayout=newCardLayout();JPanelcardPanel=newJPanel(cardLayout);//创建第一个卡片,并添加一个简单的表单

JPanelcard1=newJPanel(newGridLayout(2,2));card1.add(newJLabel("Name:"));card1.add(newJTextField());card1.add(newJLabel("E-mail:"));card1.add(newJTextField());//创建第二个卡片,并添加一个简单的表单

JPanelcard2=newJPanel(newGridLayout(2,2));card2.add(newJLabel("Username:"));card2.add(newJTextField());card2.add(newJLabel("Password:"));card2.add(newJPasswordField());

//将卡片添加到卡片面板中,并为每个卡片指定一个名称

cardPanel.add(card1,"Card1");cardPanel.add(card2,"Card2");//创建一个按钮面板,并添加一个“Next”按钮

JPanelbuttonPanel=newJPanel();JButtonnextButton=newJButton("Next");//为“Next”按钮添加动作监听器,以便在单击时切换到下一个卡片

nextButton.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){cardLayout.next(cardPanel);7.3.6CardLayout}});buttonPanel.add(nextButton);//将卡片面板和按钮面板添加到窗口中

frame.add(cardPanel,BorderLayout.CENTER);frame.add(buttonPanel,BorderLayout.SOUTH);//设置窗口为可见

frame.setVisible(true);}}在这个示例中,“Card1”卡片有两个属性(Name和E-mail),“Card2”卡片也有两个属性(Username和Password)。单击“Next”按钮可以在这两个卡片之间进行切换。运行以上代码,运行结果如图7.11所示。图7.11运行结果注意:添加组件到CardLayout中时,需要指定一个字符串作为该组件的名称,可以使用show(Container,String)方法,通过名称来显示特定的组件。目录导航7.1

Swing简介7.2

Swing顶级容器7.3

Swing布局7.4

Swing常用组件7.5事件处理机制7.6

【商业实例】“银行提款机”项目——实现操作界面7.7

【综合实训】使用GUI实现一个计算器7.4.1文本类组件1.JLabelJLabel(标签组件)可以显示图像,可以设置图标(Icon)作为标签的内容。此外,JLabel还可以设置对齐方式,包括水平对齐和垂直对齐。JLabel的使用示例如下。importjavax.swing.*;publicclassJLabelExample{publicstaticvoidmain(String[]args){//创建一个JFrame实例

JFrameframe=newJFrame();//创建一个JLabel实例

JLabellabel=newJLabel("Hello,World!");//将JLabel实例添加到JFrame实例中

frame.getContentPane().add(label);//设置JFrame实例的大小

frame.setSize(300,200);//设置JFrame实例的默认关闭操作

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//使JFrame实例可见

frame.setVisible(true);}}在这个示例中首先,创建了一个JFrame实例;其次,创建了一个JLabel实例,并将其添加到JFrame实例中;最后,设置了JFrame实例的大小,并使其可见。运行以上代码,运行结果如图7.12所示。图7.12运行结果7.4.1文本类组件2.JTextFieldJTextField(单行文本组件)是一个单行文本框,用户可以在其中输入和编辑一行文本。它常用于收集用户输入的简短文本信息,如用户名或密码。JTextField的使用示例如下。importjavax.swing.*;publicclassJTextFieldExample{//创建一个JFrame实例

JFrameframe=newJFrame();//设置布局管理器为FlowLayout/*因为JTextField填满了整个JFrame,所以边框被JFrame的边缘遮挡了,呈现无边框的效果*//*为了解决这个问题,可以使用布局管理器FlowLayout,它会自动调整组件的大小和位置,或者手动设置JTextField的大小和位置*/frame.setLayout(newFlowLayout());//创建一个JTextField实例

JTextFieldtextField=newJTextField("Hello,World!",20);//设置文本属性值

textField.setText("Hello,World!");//获取文本属性值

Stringtext=textField.getText();//设置JTextField实例的边框

textField.setBorder(newLineBorder(Color.BLACK));7.4.1文本类组件//将JTextField实例添加到JFrame实例中

frame.getContentPane().add(textField);//设置JFrame实例的大小

frame.setSize(300,200);//设置JFrame实例的默认关闭操作

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//使JFrame实例可见

frame.setVisible(true);}在这个示例中,首先,创建了一个JFrame实例;其次,创建了一个JTextField实例,设置初始文本为“Hello,World!”,并将其添加到JFrame实例中;最后,设置了JFrame实例的大小,并使其可见。运行以上代码,运行结果如图7.13所示。图7.13运行结果7.4.1文本类组件3.JTextAreaJTextArea(多行文本组件)是一个多行文本框,主要用于显示和编辑多行文本。它比JTextField更灵活,可以处理更多的文本,可以换行,还可以自由滚动。下面介绍JTextArea的使用示例。importjavax.swing.*;publicclassJTextAreaExample{publicstaticvoidmain(String[]args){//创建一个JFrame实例

JFrameframe=newJFrame();//创建一个JTextArea实例

JTextAreatextArea=newJTextArea("Hello,World!");//添加文本

textArea.append("TextArea");//插入文本

textArea.insert("Print",0);//设置JTextArea实例的边框

textArea.setBorder(newLineBorder(Color.BLACK));//将JTextArea实例添加到JScrollPane实例中

JScrollPanescrollPane=newJScrollPane(textArea);//将JScrollPane实例添加到JFrame实例中

frame.getContentPane().add(scrollPane);//设置JFrame实例的大小

frame.setSize(300,200);//设置JFrame实例的默认关闭操作

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//使JFrame实例可见

frame.setVisible(true);}}7.4.1文本类组件4.JEditorPane和JTextPaneJEditorPane和JTextPane(均为复杂文本组件)是Swing中用于显示及编辑文本的组件,它们比JTextArea更强大,因为它们支持多种格式的文本,包括纯文本、HTML文本、RTF文本等。JEditorPane提供了一种简单的机制来处理文本的显示及编辑。它可以处理不同内容类型的文本(如“text/plain”“text/html”“text/rtf”等),可以通过setContentType(String)方法来设置内容类型。importjavax.swing.*;publicclassJEditorPaneExample{publicstaticvoidmain(String[]args){//创建一个JFrame实例

JFrameframe=newJFrame();//创建一个JEditorPane实例

JEditorPaneeditorPane=newJEditorPane();editorPane.setContentType("text/html");editorPane.setText("<html><body><h1>Hello,</h1>World!</body></html>");editorPane.setEditable(false);//创建一个JScrollPane实例,并将JEditorPane实例添加进去

JScrollPanescrollPane=newJScrollPane(editorPane);//将JScrollPane实例添加到JFrame实例中

frame.getContentPane().add(scrollPane);//设置JFrame实例的大小

frame.setSize(300,200);//设置JFrame实例的默认关闭操作

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//使JFrame实例可见

frame.setVisible(true);}}7.4.1文本类组件JTextPane的使用示例,使用StyledDocument类型的对象来插入带有样式的文本importjavax.swing.*;importjavax.swing.text.*;publicclassJTextPaneExample{publicstaticvoidmain(String[]args)throwsBadLocationException{//创建一个JFrame实例

JFrameframe=newJFrame();//创建一个JTextPane实例

JTextPanetextPane=newJTextPane();//获取StyledDocumentStyledDocumentdoc=textPane.getStyledDocument();//创建一个新的样式并设置其为粗体

Stylestyle=textPane.addStyle("Bold",null);StyleConstants.setBold(style,true);

//在JTextPane实例中添加文本

doc.insertString(doc.getLength(),"Hello,",style);doc.insertString(doc.getLength(),"World!",null);//创建一个JScrollPane实例,并将JTextPane实例添加进去

JScrollPanescrollPane=newJScrollPane(textPane);//将JScrollPane实例添加到JFrame实例中

frame.getContentPane().add(scrollPane);//设置JFrame实例的大小

frame.setSize(300,200);//设置JFrame实例的默认关闭操作

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//使JFrame实例可见

frame.setVisible(true);}}7.4.2选择类组件1.JCheckBoxJCheckBox(复选框组件)允许用户从预设的多个选项中选择一个或多个选项。每个JCheckBox都有一个标签和一个小的方框,选中时,方框中会显示一个标记。使用JCheckBox的常见场景包括让用户选择应用程序的配置选项、在表格中选择多行数据等。importjavax.swing.*;importjava.awt.*;importjava.awt.event.ItemEvent;importjava.awt.event.ItemListener;publicclassJCheckBoxExample{publicstaticvoidmain(String[]args){//创建一个JFrame实例

JFrameframe=newJFrame();frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setSize(300,200);//创建一个JCheckBox实例

JCheckBoxcheckBox=newJCheckBox("Checkme");//添加ItemListenercheckBox.addItemListener(newItemListener(){publicvoiditemStateChanged(ItemEvente){if(e.getStateChange()==ItemEvent.SELECTED){System.out.println("Checkboxisselected");}else{System.out.println("Checkboxisnotselected");}}});//将JCheckBox实例添加到JFrame实例中

frame.getContentPane().add(checkBox,BorderLayout.CENTER);//使JFrame实例可见

frame.setVisible(true);}}7.4.2选择类组件JRadioButton(单选按钮组件)允许用户从多个单选项中选择一个。每个JRadioButton都有一个标签和一个小的圆形按钮,用户可以通过单击圆形按钮来更改他们的选择。使用JRadioButton的常见场景包括在问卷调查中让用户在一组选项中选择一个、在应用程序的设置中让用户选择一个选项等。importjavax.swing.*;importjava.awt.*;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;publicclassJRadioButtonExample{publicstaticvoidmain(String[]args){//创建一个JFrame实例

JFrameframe=newJFrame();frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setSize(300,200);//创建两个JRadioButton实例

JRadioButtonradio1=newJRadioButton("Option1");JRadioButtonradio2=newJRadioButton("Option2");//创建一个ButtonGroup实例并将两个JRadioButton实例添加到其中

ButtonGroupgroup=newButtonGroup();2.JRadioButtongroup.add(radio1);group.add(radio2);//添加ActionListenerActionListeneral=newActionListener(){publicvoidactionPerformed(ActionEvente){System.out.println("Selectedoption:"+e.getActionCommand());}};radio1.addActionListener(al);radio2.addActionListener(al);//将JRadioButton实例添加到JFrame实例中

frame.getContentPane().setLayout(newFlowLayout());frame.getContentPane().add(radio1);frame.getContentPane().add(radio2);//使JFrame实例可见

frame.setVisible(true);}}7.4.2选择类组件JComboBox(下拉列表组件)允许用户从下拉列表中选择一个选项,它通常用于需要在多个选项中选择一个的场景,如选择国家、语言、颜色等。importjavax.swing.*;importjava.awt.*;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;publicclassJComboBoxExample{publicstaticvoidmain(String[]args){//创建一个JFrame实例

JFrameframe=newJFrame();frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setSize(300,200);//创建一个JComboBox实例

String[]languages={"English","Spanish","French","German","Chinese"};JComboBox<String>comboBox=newJComboBox<>(languages);//设置布局,用户可控制JComboBox实例的大小

frame.setLayout(newFlowLayout());3.JComboBox//设置首选大小

comboBox.setPreferredSize(newDimension(150,20));//添加ActionListenercomboBox.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){System.out.println("Selectedlanguage:"+comboBox.getSelectedItem());}});//将JComboBox实例添加到JFrame实例中

frame.getContentPane().add(comboBox,BorderLayout.CENTER);//使JFrame实例可见

frame.setVisible(true);}}7.4.2选择类组件4.JListJList(列表框组件)用于显示一个可滚动的项目列表,用户可以从中选择一个或多个选项。JList可以是简单的、只包含文本选项的列表,也可以是复杂的、包含自定义渲染的选项的列表。importjavax.swing.*;importjava.awt.*;importjava.awt.event.*;publicclassJListExample{publicstaticvoidmain(String[]args){//创建一个JFrame实例

JFrameframe=newJFrame();frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setSize(300,200);//创建一个JList实例

String[]languages={"English","Spanish","French","German","Chinese"};JList<String>list=newJList<>(languages);//添加ListSelectionListenerlist.addListSelectionListener(newListSelectionListener(){publicvoidvalueChanged(ListSelectionEvente){if(!e.getValueIsAdjusting()){System.out.println("Selectedlanguage:"+list.getSelectedValue());}}});//将JList实例添加到JScrollPane实例中

JScrollPanescrollPane=newJScrollPane(list);//将JScrollPane实例添加到JFrame实例中

frame.getContentPane().add(scrollPane,BorderLayout.CENTER);//使JFrame实例可见

fram

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论