对话框AWT组件实践_第1页
对话框AWT组件实践_第2页
对话框AWT组件实践_第3页
对话框AWT组件实践_第4页
对话框AWT组件实践_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

1、 南昌大学实验报告学生姓名: 杨晖 学 号: 8000114244 专业班级: 卓越141班 实验类型: 验证 综合 设计 创新 实验日期: 2016.11.25 实验成绩: 一、 实验项目名称上机实践10 对话框 && AWT组件实践二、 实验目的和要求实验目的:熟悉java GUI编程三、 实验步骤修改以及增加的代码已经用底色注明,请老师留意实验1 字体对话框FontDialog.javapackage 实验1;import java.awt.event.*;import java.awt.*;import javax.swing.*;public class FontDi

2、alog extends JDialog implements ItemListener,ActionListener FontFamilyNames fontFamilyNames; int fontSize=38; String fontName; JComboBox fontNameList,fontSizeList; JLabel label; Font font; JButton yes,cancel; static int YES=1,NO=0; int state=-1; FontDialog(JFrame f) super(f); setTitle("字体对话框&qu

3、ot;); font=new Font("宋体",Font.PLAIN,12); fontFamilyNames=new FontFamilyNames(); setModal(true); /当前对话框调用setModal(boolean b)设置为有模式 yes=new JButton("Yes"); cancel=new JButton("cancel"); yes.addActionListener(this); cancel.addActionListener(this); label=new JLabel("he

4、llo,奥运",JLabel.CENTER); fontNameList=new JComboBox(); fontSizeList=new JComboBox(); String name=fontFamilyNames.getFontName(); fontNameList.addItem("字体"); for(int k=0;k<name.length;k+) fontNameList.addItem(namek); fontSizeList.addItem("大小"); for(int k=8;k<72;k=k+2) fon

5、tSizeList.addItem(new Integer(k); fontNameList.addItemListener(this); fontSizeList.addItemListener(this); JPanel pNorth=new JPanel(); pNorth.add(fontNameList); pNorth.add(fontSizeList); add(pNorth,BorderLayout.NORTH); add(label,BorderLayout.CENTER); JPanel pSouth=new JPanel(); pSouth.add(yes); pSout

6、h.add(cancel); add(pSouth,BorderLayout.SOUTH); setBounds(100,100,280,170); setDefaultCloseOperation(DISPOSE_ON_CLOSE); validate(); public void itemStateChanged(ItemEvent e) if(e.getSource()=fontNameList) fontName=(String)fontNameList.getSelectedItem(); font=new Font(fontName,Font.PLAIN,fontSize); el

7、se if(e.getSource()=fontSizeList) Integer m=(Integer)fontSizeList.getSelectedItem(); fontSize=Value(); font=new Font(fontName,Font.PLAIN,fontSize); label.setFont(font); label.repaint(); validate(); public void actionPerformed(ActionEvent e) if(e.getSource()=yes) state=YES; setVisible(false); /对

8、话框设置为不可见 else if(e.getSource()=cancel) state=NO; setVisible(false); /对话框设置为不可见 public int getState() return state; public Font getFont() return font; 按”yes”按钮之后字体对话框自动隐藏:主窗口字体发生改变7实验后的练习给上述实验中的对话框增加设置字体的字形(常规LPAIN,加重BOLD,斜体ITALIC)功能。可以对Font类的static常量LPAIN,BOLD,ITALIC,进行有效的运算,例如Font.BOLD+Font.ITALIC就

9、是加重的斜体字形。修改FontDialg.javapackage 实验1;import java.awt.event.*;import java.awt.*;import javax.swing.*;public class FontDialog extends JDialog implements ItemListener,ActionListener FontFamilyNames fontFamilyNames; int fontSize=38; String fontName,fontXing;/增加一个字形下拉框的字符串变量fontXing JComboBox fontNameLis

10、t,fontSizeList; JComboBox fontType; /增加字形下拉框 JLabel label; Font font; JButton yes,cancel; static int YES=1,NO=0; int state=-1; FontDialog(JFrame f) super(f); setTitle("字体对话框"); font=new Font("宋体",Font.PLAIN,12); fontFamilyNames=new FontFamilyNames(); setModal(true); /当前对话框调用setMo

11、dal(boolean b)设置为有模式 yes=new JButton("Yes"); cancel=new JButton("cancel"); yes.addActionListener(this); cancel.addActionListener(this); label=new JLabel("hello,奥运",JLabel.CENTER); fontNameList=new JComboBox(); fontSizeList=new JComboBox(); fontType = new JComboBox();/常规

12、PLAIN,加重BOLD,斜体ITALIC /声明语句 fontType.addItem("常规"); fontType.addItem("加重"); fontType.addItem("斜体"); fontType.addItem("常规斜体"); fontType.addItem("加重斜体"); fontType.addItemListener(this); String name=fontFamilyNames.getFontName(); fontNameList.addItem(&q

13、uot;字体"); for(int k=0;k<name.length;k+) fontNameList.addItem(namek); fontSizeList.addItem("大小"); for(int k=8;k<72;k=k+2) fontSizeList.addItem(new Integer(k); fontNameList.addItemListener(this); fontSizeList.addItemListener(this); JPanel pNorth=new JPanel(); pNorth.add(fontNameLi

14、st); pNorth.add(fontSizeList); pNorth.add(fontType); add(pNorth,BorderLayout.NORTH); add(label,BorderLayout.CENTER); JPanel pSouth=new JPanel(); pSouth.add(yes); pSouth.add(cancel); add(pSouth,BorderLayout.SOUTH); setBounds(100,100,400,170); /加宽对话框来正常显示新增的字形下拉框 setDefaultCloseOperation(DISPOSE_ON_CL

15、OSE); validate(); public void itemStateChanged(ItemEvent e) if(e.getSource()=fontNameList) fontName=(String)fontNameList.getSelectedItem(); font=new Font(fontName,Font.PLAIN,fontSize); else if(e.getSource()=fontSizeList) Integer m=(Integer)fontSizeList.getSelectedItem(); fontSize=Value(); font=

16、new Font(fontName,Font.PLAIN,fontSize); else if(e.getSource() = fontType) fontXing = (String)fontType.getSelectedItem(); if(fontXing.equals("常规") font = new Font(fontName, Font.PLAIN, fontSize); else if(fontXing.equals("加重") font = new Font(fontName, Font.BOLD, fontSize); else if

17、(fontXing.equals("斜体") font = new Font(fontName, Font.ITALIC, fontSize); else if(fontXing.equals("常规斜体") font = new Font(fontName, Font.PLAIN+Font.ITALIC, fontSize); else if(fontXing.equals("加重斜体") font = new Font(fontName, Font.BOLD+Font.ITALIC, fontSize); label.setFon

18、t(font); label.repaint(); validate(); public void actionPerformed(ActionEvent e) if(e.getSource()=yes) state=YES; setVisible(false); /对话框设置为不可见 else if(e.getSource()=cancel) state=NO; setVisible(false); /对话框设置为不可见 public int getState() return state; public Font getFont() return font; 效果图见下页:实验2 计算平方

19、根package 实验2;import javax.swing.*;public class InputNumber public static void main(String args) double result=0; boolean inputComplete=false; while(inputComplete=false) String str=JOptionPane.showInputDialog(null, "请输入一个正数","输入框",JOptionPane.PLAIN_MESSAGE); /弹出输入对话框 try result =

20、Double.parseDouble(str); if(result>=0) inputComplete = true; catch(NumberFormatException exp) JOptionPane.showMessageDialog(null, "输入错误","警告",JOptionPane.WARNING_MESSAGE); /弹出消息对话框 inputComplete = false; double sqrtRoot = Math.sqrt(result); System.out.println(result+"平方根:

21、"+sqrtRoot); 7实验后的练习编写一个应用程序,程序运行时弹出一个输入对话框,用户使用该对话框输入一个字符串,但不允许输入的字符串的长度超过10,否则程序弹出一个消息对话框,警告出现了输入错误。如果输入无错误,程序输出用户输入的字符串的长度。package 实验2;import javax.swing.*;public class InputNumber public static void main(String args) long chang; String str; boolean inputComplete=false; while(inputComplete =

22、 false) str=JOptionPane.showInputDialog(null, "请输入字符串","输入框",JOptionPane.PLAIN_MESSAGE); /弹出输入对话框 chang = str.length(); if(chang>10) JOptionPane.showMessageDialog(null, "输入错误","警告",JOptionPane.WARNING_MESSAGE); /弹出消息对话框 inputComplete = false; else System.ou

23、t.println("字符串长为:"+str.length(); inputComplete = true; AWT组件实践实验1 算术测试ComputerFrame.java实验1 package 实验3;import java.awt.*;import java.awt.event.*;public class ComputerFrame extends Frame implements ActionListener TextField textOne,textTwo,textResult; Button getProblem,giveAnwser; Label ope

24、ratorLabel,message; Teacher teacher; ComputerFrame(String s) super(s); teacher=new Teacher(); setLayout(new FlowLayout(); textOne=new TextField(10); /创建textOne,其可见字符长是10 textTwo=new TextField(10); /创建textTwo,其可见字符长是10 textResult=new TextField(10); /创建textResult,其可见字符长是10 operatorLabel=new Label(&quo

25、t;+"); message=new Label("你还没有回答呢"); getProblem=new Button("获取题目"); giveAnwser=new Button("确认答案"); add(getProblem); add(textOne); add(operatorLabel); add(textTwo); add(new Label("="); add(textResult); add(giveAnwser); add(message); textResult.requestFocus

26、(); textOne.setEditable(false); textTwo.setEditable(false); getProblem.addActionListener(this);/将当前窗口注册为getProblem的ActionEvent事件监视器 giveAnwser.addActionListener(this);/将当前窗口注册为giveAnwser的ActionEvent事件监视器 textResult.addActionListener(this);/将当前窗口注册为textResult的ActionEvent事件监视器 setBounds(100,100,450,10

27、0); setVisible(true); validate(); addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0); ); public void actionPerformed(ActionEvent e) if(e.getSource() = getProblem) /判断事件源是否是getProblem int number1=teacher.giveNumberOne(100); int number2=teacher.giveNumberTwo(

28、100); String operator=teacher.giveOperator(); textOne.setText(""+number1); textTwo.setText(""+number2); operatorLabel.setText(operator); message.setText("请回答");textResult.setText(null); if(e.getSource() = giveAnwser) /判断事件源是否是giveAnwser String answer=textResult.getText(

29、); try int result=Integer.parseInt(answer); if(teacher.getRight(result)=true) message.setText("你回答正确"); else message.setText("你回答错误"); catch(NumberFormatException ex) message.setText("请输入数字字符"); textResult.requestFocus(); validate(); 输入正确的答案测试:测试不输入确认答案:实验2 信号灯SignalFra

30、me.javapackage 实验4;import java.awt.BorderLayout;import java.awt.Choice;import java.awt.Frame;import java.awt.Label;import java.awt.event.ItemEvent;import java.awt.event.ItemListener;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;public class SignalFrame extends Frame implement

31、s ItemListener Choice choice;SignalCanvas signal = null;String itemRed = "红灯", itemYellow = "黄灯", itemGreen = "绿灯"public SignalFrame() choice = new Choice(); / 创建choicechoice.add(itemRed); / 创建choice添加itemRedchoice.add(itemYellow); / 创建choice添加itemYellowchoice.add(itemG

32、reen); / 创建choice添加itemGreenchoice.addItemListener(this); / 将当前窗口注册为choice的ItemEvent事件监视器add(choice, BorderLayout.NORTH);try Class cs = Class.forName("实验4.SignalCanvas");signal = (SignalCanvas) cs.newInstance();add(signal, BorderLayout.CENTER); catch (Exception e) add(new Label("您还没有编

33、写SignalCanvas类"), BorderLayout.CENTER);setBounds(100, 100, 360, 300);setVisible(true);validate();addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0););public void itemStateChanged(ItemEvent e) String item = choice.getSelectedItem(); / choice返回被选中的条目int

34、w = signal.getBounds().width;int h = signal.getBounds().height;int m = Math.min(w, h);signal.setRadius(m / 6);if (item.equals(itemRed) if (signal != null) signal.setRed(1);signal.setYellow(0);signal.setGreen(0);signal.setPosition(w / 3, 0);signal.repaint(); else if (item.equals(itemYellow) if (signa

35、l != null) signal.setRed(0);signal.setYellow(1);signal.setGreen(0);signal.setPosition(w / 3, h / 3);signal.repaint(); else if (item.equals(itemGreen) if (signal != null) signal.setRed(0);signal.setYellow(0);signal.setGreen(1);signal.setPosition(w / 3, 2 * h / 3);signal.repaint();实验3 布局与日历CalendarFra

36、me.javapackage 实验5;import java.util.*;import java.awt.*;import java.awt.event.*;import java.applet.*;public class CalendarFrame extends Frame implements ActionListener Label labelDay = new Label42;Button titleName = new Button7;String name = "日", "一", "二", "三"

37、, "四", "五", "六" ;Button nextMonth, previousMonth;int year = 2006, month = 10;CalendarBean calendar;Label showMessage = new Label("", Label.CENTER);public CalendarFrame() Panel pCenter = new Panel();pCenter.setLayout(new GridLayout(7, 7); / 将pCenter的布局设置为7行7列的G

38、ridLayout/ 布局。for (int i = 0; i < 7; i+) titleNamei = new Button(namei);pCenter.add(titleNamei);/ pCenter添加组件titleNamei。for (int i = 0; i < 42; i+) labelDayi = new Label("", Label.CENTER);pCenter.add(labelDayi);/ pCenter添加组件labelDayi。calendar = new CalendarBean();calendar.setYear(yea

39、r);calendar.setMonth(month);String day = calendar.getCalendar();for (int i = 0; i < 42; i+) labelDayi.setText(dayi);nextMonth = new Button("下月");previousMonth = new Button("上月");nextMonth.addActionListener(this);previousMonth.addActionListener(this);Panel pNorth = new Panel(),

40、 pSouth = new Panel();pNorth.add(previousMonth);pNorth.add(nextMonth);pSouth.add(showMessage);showMessage.setText("日历:" + calendar.getYear() + "年" + calendar.getMonth() + "月");ScrollPane scrollPane = new ScrollPane();scrollPane.add(pCenter);add(scrollPane, BorderLayout.

41、CENTER);/ 窗口添加scrollPane在中心区域add(pNorth, BorderLayout.NORTH);/ 窗口添加pNorth 在北面区域add(pSouth, BorderLayout.SOUTH);/ 窗口添加pSouth 在南区域。public void actionPerformed(ActionEvent e) if (e.getSource() = nextMonth) month = month + 1;if (month > 12)month = 1;calendar.setMonth(month);String day = calendar.getC

42、alendar();for (int i = 0; i < 42; i+) labelDayi.setText(dayi); else if (e.getSource() = previousMonth) month = month - 1;if (month < 1)month = 12;calendar.setMonth(month);String day = calendar.getCalendar();for (int i = 0; i < 42; i+) labelDayi.setText(dayi);showMessage.setText("日历:&qu

43、ot; + calendar.getYear() + "年" + calendar.getMonth() + "月");实验1 方程求根package 实验6;import java.awt.*;import java.awt.event.*;public class EquationFrame extends Frame implements ActionListener SquareEquation equation;TextField textA, textB, textC;TextArea showRoots;Button controlButt

44、on;public EquationFrame() equation = new SquareEquation();textA = new TextField(8);textB = new TextField(8);textC = new TextField(8);showRoots = new TextArea();controlButton = new Button("确定");Panel pNorth = new Panel();pNorth.add(new Label("二次项系数:");pNorth.add(textA);pNorth.add(

45、new Label("一次项系数:");pNorth.add(textB);pNorth.add(new Label("常数项系数:");pNorth.add(textC);pNorth.add(controlButton);controlButton.addActionListener(this); / 当前窗口作为controlButton的ActionEvent事件的监视器add(pNorth, BorderLayout.NORTH);add(showRoots, BorderLayout.CENTER);setBounds(100, 100, 6

46、30, 160);setVisible(true);validate();addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0););public void actionPerformed(ActionEvent e) try double a = Double.parseDouble(textA.getText(); / textA调用方法获取其中的文本double b = Double.parseDouble(textB.getText();/ textB调用

47、方法获取其中的文本double c = Double.parseDouble(textC.getText(); / textC调用方法获取其中的文本equation.setA(a);equation.setB(b);equation.setC(c);textA.setText("" + a);textB.setText("" + b);textC.setText("" + c);showRoots.append("n 根:" + equation.getRootOne();showRoots.append(&quo

48、t; 根:" + equation.getRootTwo(); catch (Exception ex) showRoots.append("n" + ex + "n");实验2 字体对话框FontDialog.javapackage 实验7;import java.awt.event.*;import java.awt.*;import javax.swing.JLabel;public class FontDialog extends Dialog implements ItemListener, ActionListener FontFa

49、milyNames fontFamilyNames;int fontSize = 38;String fontName;Choice fontNameList;JLabel label;Font font;Button yes, cancel;static int YES = 1, NO = 0;int state = -1;FontDialog(Frame f) super(f);fontFamilyNames = new FontFamilyNames();setModal(true); / 对话框设置为有模式yes = new Button("Yes");cancel

50、 = new Button("cancel");yes.addActionListener(this);cancel.addActionListener(this);label = new JLabel("hello,奥运", JLabel.CENTER);fontNameList = new Choice();String name = fontFamilyNames.getFontName();for (int k = 0; k < name.length; k+) fontNameList.add(namek);fontNameList.addItemListe

温馨提示

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

评论

0/150

提交评论