攀枝花学院Java实验六 Java Swing(上课用)
- 格式:docx
- 大小:153.35 KB
- 文档页数:9
Swing(曹雯君)Swing是一个为Java设计的图形用户界面(GUI)工具包。
Swing是Java API的一部分。
Swing包括了GUI的元器件,如:文本框,按钮,分隔窗格和表。
Swing用于提供一组“轻量级”(全部是 Java 语言)组件,它们用纯Java写成,所以同样可以跨平台使用。
轻量级元件的缺点则是执行速度较慢,优点就是可以在所有平台上采用统一的行为。
1. 30分钟快速上手1.1 Swing和AWT的关系与区别•关系Swing是一个用于开发JAVA应用程序用户界面的开发工具包。
以抽象窗口包(AWT)为基础使跨平台应用程序可以使用任何可插拔的外观风格。
Swing API的大部分是AWT的补充扩展而不是直接的替代。
Swing用来绘制轻量级组件的核心渲染功能是由Java 2D提供的,这是AWT的一部分。
然而,轻量级和重量级组件在同一个应用中使用会导致Z-order不兼容。
•区别Swing为基于窗体的GUI应用开发设计,为Java跨平台特性提供了卓越的支持,它完全没有本地代码,不受操作系统的影响,做到了真正的跨平台应用,甚至能够提供本地窗口系统不支持的其他特性。
因此比AWT具有更强的实用性,同时比AWT程序拥有更加精致的外观感受。
AWT只提供基本的组件,使很多设计变得复杂,且无法在不同的平台下保持显示风格的一致性。
例如:如果建立一个按钮(Button)对象,就会有一个按钮对象会请求底层操作系统创建一个真正的按钮。
即在WindowsNT上执行那么创建的就是WindowsNT按钮;在Linux 上执行,那么创建的就是Linux按钮。
因此AWT组件外观会受到底层操作系统的影响。
1.2 Swing操作步骤1.2.1 导入Swing包import javax.swing.*;大部分的Swing程序用到AWT的基础底层结构和事件模型,因此需要导入两个包:import java.awt.*;import java.awt.event.*;如果图形界面中包括了事件处理,那么还需要导入事件处理包:import.javax.swing.event.*;1.2.2 选择界面风格Swing允许选择程序的图形界面风格常用的有Java风格,Windows风格等。
Java桌面应用程序的开发:Swing、SWT和JavaFX一、引言在计算机科学领域,Java 是一门非常流行的编程语言,被广泛应用于各个领域。
除了用于开发Web 应用程序和移动应用程序之外,Java 还被用于开发桌面应用程序。
本文将介绍Java 桌面应用程序开发的三种主要技术:Swing、SWT 和JavaFX。
二、SwingSwing 是Java 提供的一套UI 组件,用于开发桌面应用程序。
它是Java Foundation Classes(JFC)的一部分,提供了丰富的图形用户界面组件,如按钮、文本框、标签等。
Swing 的特点是跨平台,可以在不同的操作系统上运行,并且具有良好的可定制性。
Swing 的开发相对简单,只需要导入相应的包,创建组件并将其添加到容器中即可。
例如,可以使用JFrame 类创建一个窗口,并在窗口中添加按钮和标签。
同时,Swing 还提供了丰富的布局管理器,如BorderLayout、FlowLayout 和GridBagLayout,用于管理组件的排布和布局。
三、SWTSWT(Standard Widget Toolkit)是IBM 开发的一套用于创建桌面应用程序的Java 组件库。
与Swing 不同,SWT 是基于本地操作系统的本机窗口小部件(native widget)实现的,这意味着SWT 应用程序使用操作系统提供的原生控件,具有更好的性能和更好的外观。
要使用SWT 开发桌面应用程序,需要导入相应的SWT 包,并创建Display 和Shell 对象。
Display 对象表示应用程序的显示器,而Shell 对象则表示应用程序的窗口。
通过在Shell 对象中添加按钮、文本框和标签等控件,即可创建一个简单的SWT 程序。
与Swing 类似,SWT 也提供了布局管理器,如GridLayout 和FillLayout,用于管理控件的排布。
四、JavaFXJavaFX 是Oracle 开发的一套用于创建富客户端应用程序的框架。
T u t o r i a l5TopicsInterfaceso What is an interfaceo ActionListenerIntroduction to Java Swingo What is Swingo SwingApplicationo Step-by-Step guideDesign ProblemsI n t e r f a c eWhat is an InterfaceAn interface is a collection of method declarations which can be implemented by classesAn interface describes what classes should do, without specifying how they should do itThe how will be defined in the classes that implement the interfaceEach class defines the implementation differentlyA class can implement one or more interfacesAn interface can contain both methods and constantsTo use an interface, a class mustImplement that interfaceDefine ALL methods in that interfaceA c t i o n L i s t e n e rActionListener is a Java interface implemented by many GUI components, such as buttons. It has only one method – actionPerformed. Here is its definition:public Interface ActionListener {public void actionPerformed(ActionEvent e)}The following example is a Java GUI application called SwingApplication which has a “button-click” counter – every time user clicks the button, the counter increases by 1. We will explain how to create the GUI in the next section. Here, we just want to demonstrate how one should implement ActionListener.class SwingApplication implements ActionListener{………………….……………………int numClicks = 0; //”click-counter”JLabel label = new JLabel(“Number of button clicks: ” + numClicks);JButton button = new JButton("I'm a Swing button!");button.addActionListener(this); //Add an actionListener to the button……………………public void actionPerformed(ActionEvent e){numClicks++;label.setText(“Number of button clicks: “ + numClicks);}}Here, the class SwingApplication implements the ActionListener interface. Inside the class definition, it re-defined the actionPerformed method: every time user clicks the button, the counter in the message increases by 1.Introducing the Java SwingWhat is SwingThe Swing package is part of the JavaTM Foundation Classes (JFC) in the Java platform. The JFC encompasses a group of features to help people build GUIs. Here are some commonly-used Swing components:ButtonsCombo boxListDialogScroll paneMenuTable Frame S w i n g A p p l i c a t i o nThe SwingApplication is an example we pulled from the Java Tutorial. As mentioned earlier, it is a “button-click” counter - every time the user clicks the button, the label is updated showing the counter increasing by 1.SwingApplication has four Swing components:A frame (JFrame). The frame is a top-level container. It provides a place forother Swing components to paint themselves. The other commonly used top-level containers are dialogs (JDialog) and applets (JApplet).A panel (JPanel). The panel is an intermediate container. Its only purpose is tosimplify the positioning of the button and label. Other intermediate Swingcontainers include JScrollPane (scroll panes) and JTabbedPane (tabbed panes)A button (JButton) and a label (JLabel). The button and label are atomiccomponents -- components that exist not to hold other Swing components, butto interface with the user. The Swing API provides many atomic components,including combo boxes (JComboBox), text fields (JTextField), and tables(JTable).Here is a diagram of the containment hierarchy for the window shown by SwingApplicationHere is the code that adds the button and label to the panel, and the panel to the content pane:frame = new JFrame(...);pane = new JPanel();button = new JButton(...);label = new JLabel(...);pane.add(button);pane.add(label);frame.getContentPane().add(pane, BorderLayout.CENTER);Step-by-step guideHere is a step-by-step guide of how to create this SwingApplication: Setting up the top-level containerSetting up buttons and labelsAdding components to containersHandling eventsNext we will discuss each step in length.Setting up the top-level container//Create the top-level container titled “SwingApplicatoin”JFrame frame = new JFrame("SwingApplication");..................frame.pack();frame.setVisible(true);Setting up buttons and labels//Create a buttonJButton button = new JButton("I'm a Swing button!");//Create a labelJLabel label = new JLabel(“Number of button clicks: “ + "0 ");//Set the label textint numClicks = 0;label.setText(“Number of button clicks: “ + numClicks);Adding components to containersJPanel pane = new JPanel();pane.setLayout(new GridLayout(0, 1));pane.add(button);pane.add(label);frame.getContentPane().add(pane, BorderLayout.CENTER);Handling eventsWe will discuss this feature in the next tutorial.D e s i g n P r o b l e mInterfaceYou are hired to develop an accounting program that calculates the weekly salary of three types of employees: management, union workers, and contractors.Each management employee has a social security number (SSN), name, title, and salary. There is no overtime pay for management employeesEach union worker has a SSN, name, hourly rate, and hours worked. Union rules require that we pay union workers overtime, which is 1.5 times the hourly rate for the hours they put in beyond 40Each contractor has a SSN, name, agency, hours worked, and hourly rate. We don’t have to pay contractors at a higher rate for overtime. However, there is a cap on how much each contractor can make each week. Currently, the cap is 60 * hourly rate.Please define a set of classes that model this situation. Here are some requirements: Create an abstract class called Employee which has a method called printCreate an interface Compensation which has one method called calculatePayCreate three subclasses: Management, UnionWorker, Contractor which inherit from EmployeeEach subclass will implement the Compensation interfaceEach subclass must print all its information. For example, here is the printout for a manager:SSN: 1111 Name: Wen XiaoSalary: $9500Basic Swing componentDownload the code of SwingApplication.java and add a menu bar to the frame. The menu bar has two menus: File and Edit. Within File, there are 3 menu items: Open, Save, and Exit. Within Edit, there are 2 menu items: Copy and Paste. You don’t need to implement any event-handling functions, just the GUI. (There is a short course on how to use menus at/docs/books/tutorial/uiswing/components/menu.html. Make sure the program compiles and runs.。
第Ⅰ部分:实验指导实验1:Java开发环境J2SE一、实验目的(1)学习从网络上下载并安装J2SE开发工具。
(2)学习编写简单的Java Application程序.(3)了解Java源代码、字节码文件,掌握Java程序的编辑、编译和运行过程。
二、实验任务从网络上下载或从CD-ROM直接安装J2SE开发工具,编写简单的Java Application程序,编译并运行这个程序。
三、实验内容1.安装J2SE开发工具Sun公司为所有的java程序员提供了一套免费的java开发和运行环境,取名为Java 2 SDK,可以从上进行下载。
安装的时候可以选择安装到任意的硬盘驱动器上,例如安装到C:\j2sdk1.4.1_03目录下。
教师通过大屏幕演示J2SE的安装过程,以及在Windows98/2000/2003下环境变量的设置方法。
2.安装J2SE源代码编辑工具Edit Plus教师通过大屏幕演示Edit Plus的安装过程,以及在Windows98/2000/2003操作系统环境下编辑Java 原程序的常用命令的用法。
3.编写并编译、运行一个Java Application程序。
创建一个名为HelloWorldApp的java Application程序,在屏幕上简单的显示一句话"老师,你好!"。
public class HelloWorldApp{public static void main(String[] args){System.out.println("老师,你好!");}}4.编译并运行下面的Java Application程序,写出运行结果。
1:public class MyClass {2:private int day;3:private int month;4:private int year;5:public MyClass() {6:day = 1;7:month = 1;8:year = 1900;9:}10:public MyClass(int d,int m,int y) {11:day = d;12:month = m;13:year = y;14:}15:public void display(){16:System.out.println(day + "-" + month + "-" + year);17:}18:public static void main(String args[ ]) {19:MyClass m1 = new MyClass();20:MyClass m2 = new MyClass(25,12,2001);21:m1.display();22:m2.display();23:}24:}运行结果:1-1-190025-12-2001实验2:Java基本数据类型一、实验目的(1)掌握javadoc文档化工具的使用方法。
第6章习题解答1.简述Java中设计图形用户界面程序的主要步骤。
对于设计图形用户界面程序而言,一般分为两个步骤:第一步,设计相应的用户界面,并根据需要对相关的组件进行布局;第二步,添加相关的事件处理,如鼠标、菜单、按钮和键盘等事件。
2.试说明容器与组件之间的关系。
组件(component)是图形用户界面中的各种部件(如标签、按钮、文本框等等),所有的组件类都继承自JComponent类。
容器(container)是用来放置其他组件的一种特殊部件,在java中容器用Container类描述。
3.阅读下面程序,说明其运行结果和功能。
//filename:MyFrame.javaimport java.awt.*;import java.awt.event.*;import javax.swing.*;public class MyFrame{public static void main(String agrs[]){JFrame f=new JFrame("简单窗体示例");f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);JLabel l=new JLabel("习题1");f.getContentPane().add(l,BorderLayout.CENTER);f.pack();f.setVisible(true);}}程序的运行结果如下:4.阅读下面程序,说明其运行结果和功能。
//filename:TestButton.javaimport java.awt.*;import javax.swing.*;public class TestButton extends JFrame{JButton b1,b2;TestButton(String s){super(s);b1=new JButton("按钮1");b2=new JButton("按钮2");setLayout(new FlowLayout());add(b1);add(b2);setSize(300,100);setVisible(true);}public static void main(String args[]){ TestButton test;test=new TestButton("测试按钮"); }}程序的运行结果如下:5.阅读下面程序,说明其运行结果和功能。
实验报告附页String s7 = new String("123.678");int n1=Integer.parseInt(s6);//将s6转化成int型数据。
double n2=Double.parseDouble(s7); //将s7转化成double型数据。
double m=n1+n2;System.out.println(m);String s8=String.valueOf(m); //String调用valuOf(int n)方法将m转化为字符串对象position=s8.indexOf(".");String temp=s8.substring(position+1);System.out.println("数字"+m+"有"+temp.length()+"位小数") ;@SuppressWarnings("unused")String s9=new String("ABCDEF");char a[]=s8.toCharArray(); //将s8存放到数组a中。
for(int i=a.length-1;i>=0;i--){System.out.print(" "+a[i]);}}}运行结果:将上面程序按如下要求修改,并运行:(1)程序中的s6改写成String s6=new String(“1a12b”);运行时提示怎样的错误?Exception in thread "main" ng.NumberFormatException: For input string: "1a12b"at ng.NumberFormatException.forInputString(Unknown Source)at ng.Integer.parseInt(Unknown Source)at ng.Integer.parseInt(Unknown Source)at xiti2.xiugai.main(xiugai.java:39)(2)请用数组a的前3个单元创建一个字符串并输出该串。
《Java语言程序设计基础教程》上机实验指导手册实验一基本数据类型与控制语句【目的】①掌握开发Java应用程序的3个步骤:编写源文件、编译源文件和运行应用程序;②学习同时编译多个Java源文件;③掌握char型数据和int型数据之间的相互转换,同时了解unicode字符表;④掌握使用if…else if多分支语句;⑤使用if…else分支和while循环语句解决问题。
【内容】1.一个简单的应用程序✧实验要求:编写一个简单的Java应用程序,该程序在命令行窗口输出两行文字:“你好,很高兴学习Java”和“We are students”。
✧程序运行效果示例:程序运行效果如下图所示:✧程序模板:Hello.javapublic class Hello{public static void main (String args[ ]){【代码1】//命令行窗口输出"你好,很高兴学习Java"A a=new A();a.fA();}}class A{void fA(){【代码2】//命令行窗口输出"We are students"}}✧实验后的练习:1.编译器怎样提示丢失大括号的错误?2.编译器怎样提示语句丢失分号的错误?3.编译器怎样提示将System写成system这一错误?编译器怎样提示将String写成string这一错误?2.联合编译✧实验要求:编写4个源文件:Hello.java、A.java、B.java和C.java,每个源文件只有一个类,Hello.java是一个应用程序(含有main方法),使用了A、B和C类。
将4个源文件保存到同一目录中,例如:C:\100,然后编译Hello.java。
✧程序运行效果示例:程序运行效果如下图所示:✧程序模板:模板1:Hello.javapublic class MainClass{public static void main (String args[ ]){【代码1】 //命令行窗口输出"你好,只需编译我"A a=new A();a.fA();B b=new B();b.fB();}}模板2 :A.javapublic class A{void fA(){【代码2】 //命令行窗口输出"I am A"}}模板3 :B.javapublic class B{void fB(){【代码3】 //命令行窗口输出"I am B"}}模板4 :C.javapublic class C{void fC(){【代码4】 //命令行窗口输出"I am C"}}✧实验后的练习:4.将Hello.java编译通过后,不断修改A.java源文件中的代码,比如,在命令行窗口输出“我是A类”或“我被修改了”。
Java实验报告专业班级学号姓名指导教师实验一、安装JDK并熟悉java的运行环境一、实验目的熟悉JA V A的运行环境及学习简单的编程。
二、预习内容安装工具软件的基本方法。
三、实验设备与环境装有JA V A语言工具软件(JCreator )的微机若干四、实验内容安装JCreator及JA V A的核心编译程序J2SDK。
1、打开JCreator的安装盘安装JCreator。
2、在相同目录下安装J2SDK。
3、打开JCreator软件对J2SDK文件进行配置。
4、编写一应用程序,在屏幕上显示“HELLO WORLD”。
public class Hello{public static void main(String args[]){System.out.println( "HELLO WORLD");}}5、编写一小程序实现上述功能:在屏幕上显示“HELLO WORLD”。
实验结果:五、注意事项⒈认真填写实验报告⒉遵守实验室各项制度,服从实验指导教师的安排⒊按规定的时间完成实验六、实验总结与体会1.通过这个实验我了解到java的运行环境。
2.通过这个简单的程序使我认识到做实验是要认真对待,不可马虎大意,区分字母的大小写和符号的正确使用。
实验二、基本语法练习一、实验目的⒈熟悉Java的基本语法⒉编写应用程序接收命令行参数⒊编写应用程序接收用户从键盘的输入⒋掌握字符串与数组的基本方法二、预习内容java编程的基本结构三、实验设备与环境装有JA V A语言工具软件(JCreator )的微机若干四、实验内容⒈编写一个应用程序求若干个数的平均数,原始数字要求从命令行输入。
应用程序中main方法的参数String类型的数组args能接受用户从命令行键入的参数。
(1)编辑A verage.java,设保存在D:\myjava目录下。
public class Average{public static void main(String args[ ]){double n,sum=0;for (int l=0;l<args.length;l++){sum=sum+Double.valueOf(args[l]).doubleValue();}n=sum/args.length;System.out.println("average="+n);}}(2)编译。
《Java课程设计》记事本课程设计报告书目录一、设计课题二、设计目的三、操作环境四、设计场所(机房号、机器号或自己机器)五、设计过程(设计内容及主要程序模块)六、本次设计中用到的课程知识点(列出主要知识点)七、设计过程中遇到的问题及解决办法八、程序清单五、设计过程(设计内容及主要模块,不少于3000字)1.设计要求1)界面设计2)功能实现(1)文件菜单:新建、打开、保存、另存为、退出等。
(2)其中新建菜单项可以新建一个记事本程序;打开菜单项可以打开一个用户指定的文本文件,并将其内容显示在记事本的文本区域;保存和另存为菜单项可分别实现文件的保存和另存为3)编辑菜单:复制、剪切和粘贴等4)帮助菜单:软件版本信5)右键弹出快捷菜单2.总体设计1)功能模块图:图一功能模块图2)功能描述1、打开记事本。
首先是标准型的记事本,拥有文件、编辑。
格式和帮助。
如图1所示:图1标准型记事本界面2、在标准型的记事本界面中,进行的新建一个本件名字叫新记事本。
如图2记事本文件帮助新建打开保存另存为退出复制剪切粘贴编辑关于记事本右键快捷格式字体颜色图2新建记事本功能3、用打开文件打开刚刚新建的新记事本。
如图三所示。
图3—打开文件4、点击退出即可退出,如图4所示:图4—退出记事本5、点击帮助可以看到有关记事本的相关信息,其中有作者名、版本、许可条款、隐私声明等必要信息。
如图5所示:图5—帮助相关信息6、右键可实现复制、粘贴、剪切、清除等常用功能,方便用户可以快捷方便的使用记事本。
如图6所示:图6—右键功能7、编辑也可实现制、粘贴、剪切、清除等常用功能,方便用户选择自己适合的方式,自由选择方便的快捷方式使用。
如图7:图7—编辑八、程序清单package test;import java.io.File;import java.io.*;import java.awt.event.*;import java.awt.Toolkit;import java.awt.*;import javax.swing.*;import javax.swing.filechooser.*;public class Notebook extends JFrame implements ActionListener,ItemListener{ //组件创建JButton b_save,b_close; //按钮JTextArea textArea; //文本框File tempFile; //文件JPanel jp; //面板JMenu file,edit,style,help; //菜单JMenuItemf_new,f_open,f_save,f_close,f_saveas,e_copy, e_paste,e_cut,e_clear,e_selectAll,e_find,e_rep lace,s_font,s_color,h_editor,h_help; //菜单条JMenuBar jmb;JScrollPane jsp; //滚动面板JPopupMenu popUpMenu = new JPopupMenu(); //右键弹出式菜单JLabel stateBar;//标签JLabel jl,jj;JFileChooser jfc = new JFileChooser(); //文件选择JMenuItemje_copy,je_paste,je_cut,je_clear,je_selectAll,je _find,je_replace; //弹出式菜单条public Notebook(){jfc.addChoosableFileFilter(new FileNameExtensionFilter("文本文件(*.txt)","txt"));jmb = new JMenuBar();textArea = new JTextArea();jsp = new JScrollPane(textArea);file = new JMenu("文件");edit = new JMenu("编辑");style = new JMenu("格式");help = new JMenu("帮助");je_copy = new JMenuItem("复制(C) ");je_paste = new JMenuItem("粘贴(P) ");je_cut = new JMenuItem("剪切(X) ");je_clear = new JMenuItem("清除(D) ");je_selectAll = new JMenuItem("全选(A) ");je_find = new JMenuItem("查找(F) ");je_replace = new JMenuItem("替换(R) ");je_copy.addActionListener(this); //给弹窗式的各组件添加监听器je_paste.addActionListener(this);je_cut.addActionListener(this);je_clear.addActionListener(this);je_selectAll.addActionListener(this);je_find.addActionListener(this);je_replace.addActionListener(this);//给界面上方的菜单条添加监听器f_new = new JMenuItem("新建(N)");f_new.setAccelerator(KeyStroke.getKeyS troke('N',InputEvent.CTRL_MASK,false)); //设置带修饰符快捷键f_new.addActionListener(this);f_open = new JMenuItem("打开(O)");f_open.setAccelerator(KeyStroke.getKey Stroke('O',InputEvent.CTRL_MASK,false));f_open.addActionListener(this);f_save = new JMenuItem("保存(S)");f_save.setAccelerator(KeyStroke.getKey Stroke('S',InputEvent.CTRL_MASK,false));f_save.addActionListener(this);f_saveas = new JMenuItem("另存为");f_saveas.setAccelerator(KeyStroke.getKe yStroke(KeyEvent.VK_S,InputEvent.CTRL_ MASK|InputEvent.SHIFT_MASK));f_saveas.addActionListener(this);f_close = new JMenuItem("退出(W)");f_close.setAccelerator(KeyStroke.getKey Stroke('W',InputEvent.CTRL_MASK,false));f_close.addActionListener(this);e_copy = new JMenuItem("复制(C)");e_copy.setAccelerator(KeyStroke.getKey Stroke('C',InputEvent.CTRL_MASK,false));e_copy.addActionListener(this);e_paste = new JMenuItem("粘贴(V)");e_paste.setAccelerator(KeyStroke.getKeyStro ke('V',InputEvent.CTRL_MASK,false));e_paste.addActionListener(this);e_cut = new JMenuItem("剪切(X)"); e_cut.setAccelerator(KeyStroke.getKeyStroke ('X',InputEvent.CTRL_MASK,false));e_cut.addActionListener(this);e_clear = new JMenuItem("清除(D)");e_clear.setAccelerator(KeyStroke.getKeyStrok e('D',InputEvent.CTRL_MASK,false));e_clear.addActionListener(this);e_selectAll = new JMenuItem("全选(A)");e_selectAll.setAccelerator(KeyStroke.getKey Stroke('A',InputEvent.CTRL_MASK,false));e_selectAll.addActionListener(this);e_find = new JMenuItem("查找(F)");e_find.setAccelerator(KeyStroke.getKeyStrok e('F',InputEvent.CTRL_MASK,false));e_copy.addActionListener(this);e_replace = new JMenuItem("替换(R)");e_replace.setAccelerator(KeyStroke.getK eyStroke('R',InputEvent.CTRL_MASK,false)) ;e_replace.addActionListener(this);s_font = new JMenuItem("字体(T)");s_font.setAccelerator(KeyStroke.getKeyStrok e('T',InputEvent.CTRL_MASK,false));s_font.addActionListener(this);s_color = new JMenuItem("颜色(C)...");s_color.setAccelerator(KeyStroke.getKeyStro ke(KeyEvent.VK_C,InputEvent.CTRL_MAS K | InputEvent.SHIFT_MASK));s_color.addActionListener(this);h_editor = new JMenuItem("关于记事本");h_editor.setAccelerator(KeyStroke.getKeyStro ke(KeyEvent.VK_E,InputEvent.CTRL_MAS K));h_editor.addActionListener(this);h_help = new JMenuItem("帮助信息(H)");h_help.setAccelerator(KeyStroke.getKeyStrok e(KeyEvent.VK_I,InputEvent.CTRL_MASK) );h_help.addActionListener(this);//添加右键弹出式菜单popUpMenu.add(je_copy);popUpMenu.add(je_paste);popUpMenu.add(je_cut);popUpMenu.add(je_clear);popUpMenu.addSeparator();popUpMenu.add(je_selectAll);popUpMenu.add(je_find);popUpMenu.add(je_replace);//编辑区鼠标事件,点击右键弹出"编辑"菜单textArea.addMouseListener(new MouseAdapter(){public void mouseReleased(MouseEvent e) {if(e.getButton() == MouseEvent.BUTTON3)popUpMenu.show(e.getComponent(), e.getX(), e.getY());} //e.getComponent()和textArea具有同等效果public void mouseClicked(MouseEvent e){if(e.getButton() == MouseEvent.BUTTON1)popUpMenu.setVisible(false);}});this.setJMenuBar(jmb);this.setTitle("记事本程序");file.add(f_new); //添加文件菜单组件file.add(f_open);file.addSeparator(); //加分隔线file.add(f_save);file.add(f_saveas);file.addSeparator();file.add(f_close);edit.add(e_copy); //添加编辑菜单组件edit.add(e_paste);edit.add(e_cut);edit.add(e_clear);edit.addSeparator();edit.add(e_selectAll);edit.add(e_find);edit.add(e_replace);style.addSeparator();style.add(s_font);style.add(s_color);jmb.add(file); //添加格式菜单组件jmb.add(edit);jmb.add(style);jmb.add(help);help.add(h_editor); //添加帮助菜单组件help.add(h_help);//textArea.setWrapStyleWord(true); //设置在单词过长的时候是否要把长单词移到下一行。
第一部份绪论 (2)本课程实验的作用与任务 (2)本课程实验的基础知识 (2)本课程实验教学项目及其教学要求 (2)第二部份基本实验指导 (4)实验一:Java基本语法 (4)实验三:Java面向对象程序设计(一) (9)实验五:Java常用类 (18)实验七:Java集合 (21)实验九:GUI图形用户界面 (26)第一部份绪论本课程实验的作用与任务使学生进一步深刻理解Java语言基本概念、语法规则及程序结构,熟练掌握Java语言程序设计的基本方法,提高利用Java在网络环境下开发、设计应用程序的能力,从而进一步培养学生的创新能力和解决实际问题的能力。
熟悉JDK工具的编程和调试环境;熟练掌握选择和循环结构的程序设计;熟练掌握面向对象的程序设计思想,包括系统类的应用和用户自定义类;充分理解类的三种的特性:封装、继承和多态,特别是通过接口和抽象类理解多态;掌握图形用户界面的设计,特别是事件处理;掌握包的使用;掌握常用的输入输出流类的应用。
最后能根据实验的要求认真完成实验报告。
本课程实验的基础知识Java的基本数据类型包括:byte,short,int,long,double,char。
Java的数组属于引用类型的数据,是将相同类型的数据按顺序组成的一种符合数据类型。
Java的运算符有算术运算符、关系运算符、逻辑运算符、位运算符和赋值运算符,特别要注意它们的优先级。
Java的控制语句有if语句、switch语句、for语句、while语句、do-while语句。
类是组成Java程序的基本要素,类有两个重要的成员:成员变量和方法。
类是创建对象的模板,类将对象的属性和功能封装为一个整体。
成员变量和类变量的区别、实例方法和类方法的区别、方法的重载、成员的访问权限等都是实验课程所依据的重要理论。
继承、多态、接口、包及内部类都是Java中非常重要的概念。
Java使用“流”来读写数据。
Java的输入输出工作是通过FileInputStream类、FileReader 类、BufferedReader类、ByteArrayInputStream类、ByteArrayOutputStream类等完成的。
Java语言程序设计实验指导书目录实验一 JDK的安装和运行环境变量的设置 (3)实验二 JA V A语言基础实验 (3)实验三 JA V A面向对象特性实验 (5)实验四 Java输入输出实验 (6)实验五基于AWT及SWING的GUI及事件处理实验 (8)实验六Applet (11)附录Ⅰ (14)附录Ⅱ (15)实验一 JDK的安装和运行环境变量的设置实验目的1.通过实验使学生掌握J2SDK安装和运行环境设置。
2.掌握java最简单的程序结构,会使用javac和java命令。
实验内容1.下载j2sdk1.4.2。
在网站的download链接中选择J2SE1.4.2链接,选择j2sdk-1.4.2-04-windows-i586.exe下载。
2.安装该程序。
默认安装路径为c:\jdk1.4.2。
3.设置环境变量。
主要有path和classpath两个环境变量需设置。
在windows98中的设置方式为:使用记事本打开autoexec.bat文件,加入:SET PA TH=%PATH%;c:\jdk1.4.2\binSET CLASSPATH=.; c:\jdk1.4.2\lib在windows2000按如下方法设置:进入“控制面板”->“系统”->“高级”->“环境变量”->“系统变量”后,双击path,在后面添加:c:\jdk1.4.2\bin,双击classpath,在后面添加:c:\jdk1.4.2\lib。
重新启动系统。
4、编写一个输出“这是我的第一个JA V A程序”程序。
5、示例程序:public class HelloWorld{public static void main(String [ ] args){System.out.println(“Hello World”);}}在记事本中编写该程序,并保存为d:\my\HelloWorld.java。
运行过程为:进入dos环境,切换到保存路径,然后在命令行中输入下列命令:javac HelloWorld.java编译通过后,在命令行中输入下面的命令java HelloWorld运行结果应该为:Hello World实验二 JA V A语言基础实验实验目的1.通过实验使学生掌握JA V A变量、标识符以及语法规则。
本篇文章将介绍一种基于Java语言的课程设计,旨在帮助学生深入理解Java编程语言的基本概念和应用。
本课程设计将涵盖Java语言的基础知识、面向对象编程、图形用户界面设计、网络编程和多线程编程等方面。
本课程设计将分为以下几个部分:一、Java语言基础Java语言基础部分将介绍Java语言的基本概念、语法、数据类型、运算符、流程控制语句、数组、字符串和异常处理等内容。
学生将通过编写简单的Java程序来巩固所学知识。
二、面向对象编程面向对象编程部分将介绍Java语言中的面向对象编程思想,包括类、对象、继承、封装、多态和接口等概念。
学生将通过编写简单的面向对象程序来巩固所学知识。
三、图形用户界面设计图形用户界面设计部分将介绍Java语言中的Swing库,包括窗口、面板、按钮、文本框、标签、列表框、下拉框、滚动条和菜单等组件的使用。
学生将通过编写简单的图形用户界面程序来巩固所学知识。
四、网络编程网络编程部分将介绍Java语言中的网络编程,包括Socket编程、URL编程和HTTP编程等内容。
学生将通过编写简单的网络程序来巩固所学知识。
五、多线程编程多线程编程部分将介绍Java语言中的多线程编程,包括线程的创建、启动、休眠、等待和唤醒等内容。
学生将通过编写简单的多线程程序来巩固所学知识。
六、课程设计实践课程设计实践部分将要求学生根据所学知识,设计并实现一个简单的Java程序。
该程序可以是一个图形用户界面程序、一个网络程序或一个多线程程序等。
学生将通过实践来巩固所学知识,并提高自己的编程能力。
七、总结总结部分将对本课程设计进行总结,并对学生的学习成果进行评估。
同时,本部分还将介绍Java语言的一些高级特性,如泛型、反射和注解等内容,以便学生进一步深入学习Java编程语言。
总之,本课程设计旨在帮助学生深入理解Java编程语言的基本概念和应用,提高学生的编程能力和实践能力。
通过本课程设计的学习,学生将能够掌握Java语言的基础知识、面向对象编程、图形用户界面设计、网络编程和多线程编程等方面的知识,为今后的Java编程工作打下坚实的基础。
实验报告附页 实验内容与步骤 1.Jbutton,GridLayout,BorderLayout,Jpanel的用法 实验要求: 编写一个Java应用程序,采用GridLayout实现如下计算机器的布局
代码如下: import java.awt.BorderLayout; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener;
import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JTextField; public class MyCalculater extends JFrame implements ActionListener{ private static final long serialVersionUID = 1L; JPanel mainpanel = new JPanel(); //主面板 JPanel centerpanel = new JPanel(); //中心面板 JTextField txt = new JTextField(""); //主显示区 StringBuffer sb1 = new StringBuffer(); //参数一 StringBuffer sb2 = new StringBuffer(); //参数二 char sign; boolean flag = false; JButton[] buttons = new JButton[16]; { buttons[0] = new JButton("1"); buttons[1] = new JButton("2"); buttons[2] = new JButton("3"); buttons[3] = new JButton("+"); buttons[4] = new JButton("4"); buttons[5] = new JButton("5"); buttons[6] = new JButton("6"); buttons[7] = new JButton("-"); buttons[8] = new JButton("7"); buttons[9] = new JButton("8"); buttons[10] = new JButton("9"); buttons[11] = new JButton("*"); buttons[12] = new JButton("0"); buttons[13] = new JButton("c"); buttons[14] = new JButton("="); buttons[15] = new JButton("/"); } { centerpanel.setLayout(new GridLayout(4,4,8,8)); for (int i = 0; i < buttons.length; i++) { centerpanel.add(buttons[i]); buttons[i].addActionListener(this); } }
public MyCalculater(int x,int y) { this.setTitle("我的计算器"); this.setDefaultCloseOperation(EXIT_ON_CLOSE); this.setContentPane(mainpanel); this.setResizable(false); BorderLayout bl = new BorderLayout(); mainpanel.setLayout(bl); mainpanel.add(txt,BorderLayout.NORTH); mainpanel.add(centerpanel,BorderLayout.CENTER); this.setBounds(x,y, 300, 240); this.setVisible(true); } public static void main(String[] args) { new MyCalculater(750, 200);
} @Override public void actionPerformed(ActionEvent e) { JButton jb = (JButton)e.getSource(); char c = jb.getText().charAt(0); switch(c){ case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9':{ addNum(c); break; } case '+': case '-': case '*': case '/':{ signEvent(c); break; } case 'c':{ MyCalculater.this.dispose(); new MyCalculater(MyCalculater.this.getLocation().x,MyCalculater.this.getLocation().y); break; } case '=':{ if(!flag)this.txt.setText(sb1.toString());; sb1 = new StringBuffer(getAnswer()); sb2 = new StringBuffer(); this.txt.setText(sb1.toString()); sign = '='; flag = false; break; } default: break; }
} private void signEvent(char c) { if(flag&&sb2.length()!=0){ sb1 = new StringBuffer(""+getAnswer()); this.txt.setText(sb1.toString()); } else { flag = !flag; this.txt.setText(""); } this.sign = c; } private String getAnswer() { double a = 0; if(sb1.length()!=0) a = Double.parseDouble(sb1.toString()); double b = 0; if(sb2.length()!=0) b = Double.parseDouble(sb2.toString()); double answer = 0; switch(sign){ case '+': answer = a+b; this.txt.setText(""); break; case '-': answer = a-b; this.txt.setText(""); break; case '*': answer = a*b; this.txt.setText(""); break; case '/': answer = a/b; this.txt.setText(""); break; default : return null; } this.sb1 = new StringBuffer(""); this.sb2 = new StringBuffer(""); return ""+answer; } private void addNum(char c) {
if(!flag){ sb1.append(c); this.txt.setText(sb1.toString()); } else { sb2.append(c); this.txt.setText(sb2.toString()); } } } 运行结果如下::
2.Jbutton,CardLayout,BorderLayout,Jpanel,JLabel的用法 实验要求: 编写一个Java应用程序,实现如下图布局
代码如下: package A; import java.awt.BorderLayout; import java.awt.CardLayout; import java.awt.Color; import java.awt.event.ActionEvent; import java.awt.event.ActionListener;
import javax.swing.*; @SuppressWarnings("serial") public class TextWindow extends JFrame{
JPanel p,p1,p2,p3,butPanel; JButton nextBut,preBut,button[]=new JButton[3]; JLabel label1,label2,label3; CardLayout card; public void init(){ p=new JPanel(); p1=new JPanel(); label1=new JLabel("第一个面板"); p1.setBackground(Color.YELLOW); p1.add(label1);
p2=new JPanel(); label2=new JLabel("第二个面板"); p2.setBackground(Color.GREEN); p2.add(label2);