第十九讲菜单和JavaGUI综合设计

主要内容

菜单(JMenuBar、JMenu、JmenuItem)

菜单项的事件侦听处理

颜色选择器JColorChooser

文件选择器JFileChooser

Swing中常用组件使用归纳

GUI程序设计相关练习

菜单(JMenuBar、JMenu、JmenuItem)

菜单概述

菜单的作用:给应用程序设置操作菜单。

菜单组成

JMenuItem---菜单项,直接指向一个具体的操作

JMenu---菜单,其中可加入菜单项(JMenuItem)和菜单(Jmenu)

JMenuBar----菜单栏,在其中可以加入菜单(JMenu)

JMenu

JMenuBar

JMenuItem

菜单(项、栏)的构造方法

菜单类别

构造方法

菜单栏

JMenuBar()

菜单

JMenu(String s)

菜单项

JMenuItem(String s)

菜单的组织方法

任务

方法

JMenuBarèJFrame

JFrame对象.setJMenuBar(JMenuBar m)

JMenuèJMenuBar

JMenuBar对象.add(JMenu对象)

JMenu、JmenuItem、分隔线

èJMenu

JMenu对象.add(JMenu对象)

JMenu对象.add(JmenuItem对象)

JMenu对象.addSeparator();

一个简单的菜单示例

窗口分析

窗口中置放了一个菜单和多行文本框(不同的放置方法)

菜单分析

一个菜单栏:mb

三个菜单:file、send、config

七个菜单项:open、nnew、exit、sm、sf、fc、bc

颜色选择器JColorChooser

JColorChooser

可通过调色板进行颜色的选择,默认的调色板如图。也可以自己设定调色板中的颜色种类。

构造方法

JColorChooser():创建一调色板,初始色为白色。

JColorChooser(Color initialColor):创建一调色板,初始色可由用户指定。

常用方法

public staticColorshowDialog(Component component, String title, Color initialColor)

显示调色板对话框,返回用户选择的颜色Color

title——对话框标题,initialColor——初始颜色。

练习:试分析设计如下窗口。

import java.awt.event.*;

import java.io.*;

import javax.swing.*;

import java.awt.*;

class ChooseColor extends JFrame implements ActionListener{

JButton b= new JButton("Change");

JTextArea t= new JTextArea(6, 30);

ChooseColor() {

setTitle("Change Color");

setDefaultCloseOperation(3);

setBounds(300, 200,350,200);

Container c= getContentPane();

c.setLayout(new FlowLayout());

c.add(b);

c.add(new JScrollPane(t));

b.addActionListener(this);

setVisible(true);

}

public void actionPerformed(ActionEvent ac ){

}

public static void main(String args[]) throws Exception{

new ChooseColor();

}

}

文件选择器JFileChooser

JFileChooser

可用于打开、保存文件时的文件选择。

构造方法

JFileChooser()

构造文件选择器,指向用户的默认目录。

JFileChooser(File currentDirectory)

JFileChooser(String currentDirectoryPath)

构造文件选择器,指向特定目录。

常用方法

public int showDialog(Component parent, String text)

public int showOpenDialog(Component parent)

显示文件选择对话框,用户可自定义“通过按钮”文本。(默认“打开”)

public int showSaveDialog(Component parent)

显示文件保存对话框。

public File getSelectedFile()

返回所选择的文件

练习:试分析设计如下窗口。

菜单项事件的侦听处理

菜单项事件和事件处理

当用户选定菜单项时,将发生ActionEvent事件

事件处理三要点

²安装侦听器(implements ActionListener)

²通过addActionListener(this)设置侦听

²重写方法public void actionPerformed(ActionEvent e){},其中需要捕捉发生事件的菜单项,进行分别处理。

可接受事件的菜单示例

问题:修改Firstmenu.java,使菜单上除了send E-mail之外的每一个菜单项都能有恰当的响应。

事件设计分析:

²本例处理三个菜单项选择事件

菜单项

事件分析

New

清空文本框

Open

从文件打开对话框选取文件,并导入内容到文本框

Send file

从文件保存对话框选取(输入)文件名,并实现保存

Exit

退出程序运行

Font

字体设置

Forecolor

从颜色选择对话框选取颜色,设置为文本框的前景色

Backcolor

从颜色选择对话框选取颜色,设置为文本框的背景色

Swing中常用组件使用归纳

Swing包中的常用组件

组件名称

说明

框架

JFrame

常通过继承的方法使用

用来生成GUI的Java应用程序

通常需要设置标题、尺寸、预设关闭、显示等。

加入组件时应先获取窗口的容器(getContentPane)并进行布局

标签

JLabel

颜色、字体、内容等设定

文本框

JTextField JTextArea

颜色、字体、内容等设定。对于多行文本框,可合成在JScrollPane中,以生成滚动条

在文本框内按回车键,将发生ActionEvent事件

按钮

JButton

需要侦听和处理ActionEvent事件

面板

JPanel

用以进行窗口组件的灵活布局

JPanel默认的布局方式为FlowLayout

复选框

JCheckBox

用来进行交互设置。可用复选框的isSelected()方法测试复选框有无被选中。当操作复选框时,将发生ActionEvent事件

单选按钮

JRadioButton

需要与按钮组ButtonGroup配合使用

当操作单选按钮时,将发生ActionEvent事件

组合框

JComboBox

用来列出多个选项,下拉时可供用户选择。可用getSelectedIndex()方法来获取用户选项的序数。其值从0开始,为-1时没有一项被选中。当用户选择时,也将激发ActionEvent事件

列表框

JList

直接用列表的方式列出多个选项。也可用getSelectedIndex()方法来获取用户选项的序数。当用户选取时,将发生ListSelectionEvent事件。

滚动面板

JScorllPane

可为多行文本框、列表框直接定制需要的滚动条

菜单项

JMenuItem

直接指向操作,需要加入菜单后才可使用。当用户选取时,将发生ActionEvent事件

菜单

JMenu

用来组织菜单项,也可包含菜单(可理解为有下层菜单的菜单项)

菜单栏

JMenuBar

可用以组织窗口的菜单。可通过setJMenuBar方法,将菜单栏嵌入到JFrame窗口

文件选择器

JFileChooser

打开或保存文件用到,可打开文件对话框

颜色选择器

JColorChooser

选取颜色时用到,可打开调色板,选择颜色。

ActionEvent事件处理框架

第一步

public class JFrameTest extends JFrame implements ActionListener{

JFrameTest(String title){

.....

JButton btn = new JButton("SampleButton");

第二步

btn.addActionListener(this);

第三步

.....

}

public void actionPerformed(ActionEvent e){

/*事件处理程序*/

.....

}

public static void main(String[] args){

......

}

}

GUI程序设计相关练习

GUI程序设计基本概念

1.下面组件中不属于swing包的是_______。

a.JLabel b.JFrame c.ButtonGroupd.JMenu

2.下面不属于“容器”的是____ _____。

a.文本框 b.对话框 c.窗口

3.容器可以被添加到其它容器中去。___ ____

a.正确 b.不正确

4.组件可以被添加到容器中去。____

a.正确 b.不正确

5.容器可以添加到组件中去。_______

a.正确 b.不正确

6.组件可以被添加到其它组件中去。__ ___

a.正确 b.不正确

7.标签JLabel创建完毕,其上的显示信息就不能在程序中动态修改。

a.错b.对

8.要获得一个JLabel上显示的文本信息,应使用_________方法。

a.setText b.getText c.getContent

9.在Java语言中,复选框类名是____________。

a.JButton b.JCheckboxc.JRadioButton d.JComboBox

10.在Java语言中,单选框类名是____________。

a.JButton b.JCheckboxc.JRadioButton d.JComboBox

11.复选框的外观是________。

a.一个小正方形 b.一个小圆形 c.一个小三角形

12.单选框的外观是________。

a.一个小正方形 b.一个小圆形 c.一个小三角形

13.组合框和列表框中第一项的项目编号(也称索引)是________。

a.0 b.1 c.-1 d.10

14.可以使用__________________方法,取得当前选择的项目的索引值。

a. getSelectedIndex() b. getItem() c. getNumber()

15.在多行文本框中________输入超过程序中定义的行数。

a.能b.不能

16.可以使用______________来清除文本框text1中的文本。

a.text1.clearText() b.text1.setText(“”)

c.text1.deleteText() d.以上都可以

17.在程序中_______________,就能够实现多行文本框内容的自动换行。

a.不需要做任何考虑

b.textarea1.setLineWrap(true)

c.textarea1.setLineWrap(false)

d.textarea1.noWrap()

18.如果我们使用textfield1=new JTextField(“TEST”)来创建一个文本框,那么这个文本框的宽度有多大?

GUI程序设计基本操作

1)编程创建只容许了一个按钮的窗口。单击该按钮能自动更改其上文字,在没有单击它之前,按钮提示为“Click me”,在用户单击以后显示“Click n”(n为单击次数)。

2)设计如下图所示的加法器。

3)设计简单的Java记事本,如图所示。

菜单程序清单:

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

import java.io.*;

class MenuTest extends JFrame implements ActionListener{

JMenuBar mb;

JMenu file,send,config;

JMenuItem op,ne,ex,sf,se,fc,bc;

JTextArea t;

MenuTest(){

super("My First Menu Try.");

this.setDefaultCloseOperation(3);

menuInit();

this.setJMenuBar(mb);

this.getContentPane().add(new JScrollPane(t));

this.setBounds(300,200,600,400);

this.setVisible(true);

}

void menuInit(){

mb=new JMenuBar();

file=new JMenu("File");

send=new JMenu("Send");

op=new JMenuItem("Open");

ne=new JMenuItem("New");

ex=new JMenuItem("Exit");

se=new JMenuItem("E-mail");

sf=new JMenuItem("File");

mb.add(file);

file.add(op);file.add(ne);

file.add(send);

file.addSeparator();

file.add(ex);

send.add(se);send.add(sf);

config=new JMenu("Config");

fc=new JMenuItem("Forecolor");

bc=new JMenuItem("Backcolor");

mb.add(config);

config.add(fc);

config.add(bc);

op.addActionListener(this);

ne.addActionListener(this);

sf.addActionListener(this);

ex.addActionListener(this);

fc.addActionListener(this);

bc.addActionListener(this);

t=new JTextArea();

t.setLineWrap(true);

}

public void actionPerformed(ActionEvent e){

Object o=e.getSource();

JFileChooser f=new JFileChooser();

JColorChooser cc=new JColorChooser();

if(o==ne){

t.setText("");

}

else if(o==op){

f.showOpenDialog(this);

try{

StringBuffer s=new StringBuffer();

FileReader in=new FileReader(f.getSelectedFile());

while(true){

int b=in.read();

if(b==-1)break;

s.append((char)b);

}

t.setText(s.toString());

in.close();

}

catch(Exception ee){}

}

else if(o==sf){

f.showSaveDialog(this);

try{

FileWriter out=new FileWriter(f.getSelectedFile());

out.write(t.getText());

out.close();

}

catch(Exception ee){}

}

else if(o==ex)System.exit(0);

else if(o==bc){

Color c=cc.showDialog(this,"Please select",Color.white);

t.setBackground(c);

}

else{

Color c=cc.showDialog(this,"Please select",Color.black);

t.setForeground(c);

}

}

public static void main(String[] aa){

new MenuTest();

}

}

以下关于java的GUI菜单描述_第十九讲 菜单和JavaGUI综合设计相关推荐

  1. java语言的数组描述_下列关于Java语言的数组描述中,错误的是()。_学小易找答案...

    [单选题]下面()是正确的main()方法说明. [填空题]Java规定,如果子类中定义的成员方法与父类中定义的成员方法同名,并且参数的( )和类型以及( )的类型也相同,则父类中的同名成员方法被屏蔽 ...

  2. java中过滤流_第十四讲 Java中的字节流和过滤流

    第十四讲Java中的字节流和过滤流 主要内容 InputStream和FileInputStream OutputStream和FileOutputStream 文件字节IO流应用举例 过滤流类和常用 ...

  3. 类 workbooks 的 open 方法无效_第十九章 Cach 命令大全 OPEN 命令

    第十九章 Caché 命令大全 OPEN 命令 获取输入/输出操作的设备或文件的所有权. 重点 打开设备要指定延迟秒,否则将无限等待. 大纲 OPEN:pc device:(parameters):t ...

  4. C++_Primer_学习笔记_第十九章(特殊工具和技术)

    第十九章(特殊工具与技术) /1.控制内存分配 1).不能直接应用标准内存管理机制. 某一些应用程序需要自定义内存分配的的细节,比如使用关键字new将对象放置在特定的内存空间中. 为了实现这一个目的, ...

  5. java中什么表示菜单项_下列类型中,表示菜单项的是( )。_学小易找答案

    [单选题]下列项目属于直接费用的是( ). [单选题]已知立体的三视图,选择正确的立体图 [填空题]气候统计预测,一般分为四步.首先,( );其次,( );再次,( );最后,( ). A 建立统计模 ...

  6. java之gui索引窗口_老白的JAVA课程14 GUI 窗口的设置

    项目驱动 需求分析-系统设计-编码-测试-维护期 GUI Swing程序的建立步骤 1.建立容器-可以容纳其他图形对象的类,容器中还可以添加容器 2.建立组件-组件就是一套图形对象 3.将组件放到容器 ...

  7. 快递收件寄件JAVA小程序技术描述_解析“微快递”小程序的交互流程

    小程序凭借用完即走.无需独立下载等优点成为了饱受用户青睐的一种产品形式,而"微快递"更是人们在选择下单寄件的主要小程序之一.那么这个小程序在交互上有什么特点呢.它的流程又是怎样的呢 ...

  8. java ssm项目经验描述_第一个SSM完整项目开发心得

    博主因为打算要考研,所以为了给自己留一手后路.学习了SSM框架.这学期就做了一个完整的SSM项目.(如果考研失败就去外包做一波CRUD boy) 所以边考研边利用业余时间做了一学期,接着期末一周的We ...

  9. java迷宫类编程题_第十届蓝桥杯省赛java类B组 试题 E:迷宫 (动态规划之回溯法)...

    问题描述 试题 E: 迷宫 [问题描述] 下图给出了一个迷宫的平面图,其中标记为 1 的为障碍,标记为 0 的为可 以通行的地方. 010000 000100 001001 110000 迷宫的入口为 ...

最新文章

  1. UVa11968 - In The Airport
  2. 20 年后,我们怎么看电影?
  3. 洋哥做CTO填过的坑!
  4. linux驱动头文件说明
  5. java sql merge_sql merge用法
  6. 小程序外链跳转web-view系列问题
  7. tensorflow 提示没有models库
  8. Java 在匿名内部函数中为外部函数变量赋值的解决方案
  9. JavaWeb项目作业 Market商品管理系统
  10. 软件测试之黑盒测试白盒测试
  11. IE兼容模式文件上传所遇问题解决
  12. 以下不是dns服务器的作用,以下不是DNS服务的作用的是( )。
  13. 【价值积累】属于我的创业感悟
  14. 保护眼睛颜色的RGB
  15. pythonwhile循环语句_Python While循环语句
  16. OSChina 周六乱弹 —— 广州爱情故事
  17. 数据挖掘十大经典算法(转存)
  18. java一个式子开根号语句_[基础篇]-基础知识整理-03-JAVA中的运算符
  19. BUG日志:无法解析的外部符号 _Direct3DCreate9
  20. libusb介绍及简单使用

热门文章

  1. c语言中getc与gets,getc()和gets()的用法
  2. error aborting mysql,mysql错误1067,mysql1067错误aborting
  3. 计量经济学建模_不了解计量经济学的前世今生,怎么能学会他
  4. linux运shell 出现commond vim_有了这个神器,再也不怕shell写得不对了
  5. python写表格_使用Python对Excel进行读写操作
  6. 一文带你学会基于SpringAop实现操作日志的记录
  7. 宜昌高新区三峡云计算机大楼,【智慧宜昌】CREATOR快捷CS分布式系统成功入驻三峡云计算中心...
  8. linux spi测试程序,spidev测试方法 /how to test spidev
  9. cppcheck编译安装命令
  10. Warning: post-commit hook failed (exit code 255) with no output.