一、实验目的
1.掌握图形界面设计。
二、实验内容
1.编程包含一个标签和一个按钮,单击按钮时,标签的内容在"你好"和"再见"之间切换。
2.设计一个窗口,窗口中包含有一个文本框,一个标签,两个按钮,当按下“文本一”按纽时,使得“Hello java!”显示在文本框中,按下“文本二”按纽时,使得“你好 Java!” 显示在文本框中(要求两个按纽之间使用网格布局,与其他组件共使用Frame默认布局管理)。
3. 试设计一个窗口,内含一个按钮。开始运行时,按钮显示“Click Me”字样,当按钮按下时,按钮显示为“Click Me Again”字样,再按一次,则按钮显示“Click Me”字样,依此循环。(1,2,3可以选作其一)
4.编程包含一个文本框和一个文本区域,在文本框中按回车键时,把文本框的内容写入文本区域。
5.试设计一个窗口,窗口界面如下图。包含Style菜单、Color菜单和Exit菜单,Style菜单设计字体的样式(包括Plane、Bold、Italic),Color(红、绿、蓝、自定义)菜单设计字体的颜色、Exit菜单(CloseWindow)退出系统。
代码实现:
1.
方法一:
package p;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class T {
public static void main(String[] args) {
JFrame f=new JFrame();
FlowLayout flow =new FlowLayout();
f.setLayout(flow);//设置布局
JButton b=new JButton("exchange");
final JLabel j=new JLabel("hello");
b.addActionListener(new ActionListener(){//利用匿名类
public void actionPerformed(ActionEvent e) {
if(j.getText().equals("hello"))
j.setText("bye");
else j.setText("hello");
}
});
f.add(b); //先添加哪个,哪个组件就会在前面
f.add(j);
f.setBounds(20,20,200,200);
f.setVisible(true);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
方法二:
package cn.nefu.edu.cn;
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.JLabel;
public class MyWindow extends JFrame implements ActionListener{
JButton bt;
JLabel bq1;
public MyWindow(){
FlowLayout flow =new FlowLayout();
this.setLayout(flow);
bq1=new JLabel("bye");
bt=new JButton("exchange");
bt.addActionListener(this);//监听本身,自身实现了接口ActionListener
this.add(bt);
this.add(bq1);
validate();
this.setBounds(20,20,200,200);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void actionPerformed(ActionEvent e) {//实现切换
if(e.getSource()==bt){
if(bq1.getText().equals("bye"))
bq1.setText("hello");
else bq1.setText("bye");
}
}
}
Test.java
package cn.nefu.edu.cn;
public class Test {
public static void main(String[] args) {
new MyWindow();
}
}
2.
方法一:
package cn.edu.nefu.zhihu;
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.JLabel;
import javax.swing.JTextField;
public class MyWindow2 extends JFrame implements ActionListener{
JButton bt1;
JButton bt2;
JTextField wb;
JLabel bq;
public MyWindow2(){
GridLayout grid=new GridLayout(2,2);
this.setLayout(grid);
wb=new JTextField();
bq=new JLabel("name");
bt1=new JButton("文本一");
bt2=new JButton("文本二");
this.add(bq);
this.add(wb);
this.add(bt1);
this.add(bt2);
bt1.addActionListener(this);
bt2.addActionListener(this);
this.setVisible(true);
this.setBounds(30,30,300,300);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void actionPerformed(ActionEvent e) {
if(e.getSource()==bt1){
wb.setText("Hello java!");
}
else wb.setText("你好 Java!");
}
}
package cn.edu.nefu.zhihu;
public class Test2 {
public static void main(String[] args) {
new MyWindow2();
}
}
方法二:
package cn.edu.nefu.zhihu;
import java.awt.BorderLayout;
public class MyWindow2 extends JFrame implements ActionListener{
JButton bt1;
JButton bt2;
JTextField wb;
JLabel bq;
JPanel mb;
public MyWindow2(){
mb=new JPanel();
GridLayout grid=new GridLayout(1,2);
mb.setLayout(grid);
wb=new JTextField();
bq=new JLabel("name");
bt1=new JButton("文本一");
bt2=new JButton("文本二");
this.add(bq,BorderLayout.WEST);
this.add(wb,BorderLayout.CENTER);
mb.add(bt1);
mb.add(bt2);
this.add(mb,BorderLayout.SOUTH);
bt1.addActionListener(this);
bt2.addActionListener(this);
this.setVisible(true);
this.setBounds(30,30,300,300);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void actionPerformed(ActionEvent e) {
if(e.getSource()==bt1){
wb.setText("Hello java!");
}
else wb.setText("你好 Java!");
}
}
package cn.edu.nefu.zhihu;
public class Test2 {
public static void main(String[] args) {
//new Jisuanqi("计算器");
new MyWindow2();
}
}
package cn.edu.nefu.zhihu;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
public class MyWindow3 extends JFrame implements ActionListener{
JButton an;
MyWindow3(){
an=new JButton("Click Me");
this.add(an);
an.addActionListener(this);
this.setVisible(true);
this.setBounds(50,50,200,150);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
@Override
public void actionPerformed(ActionEvent arg0) {
if(an.getText().equals("Click Me")){
an.setText("Click Me Again");
}
else an.setText("Click Me");
}
}
package cn.edu.nefu.zhihu;
public class Test2 {
public static void main(String[] args) {
new MyWindow3();
}
}
package cn.edu.nefu.zhihu;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JTextArea;
import javax.swing.JTextField;
public class MyWindow4 extends JFrame implements ActionListener {
JTextField t1;
JTextArea t2;
MyWindow4(){
t1=new JTextField(20);
t2=new JTextArea(20,10);
this.add(t1,BorderLayout.WEST);
this.add(t2,BorderLayout.CENTER);
t1.addActionListener(this);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setBounds(100,100,200,400);
}
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource()==t1){
t2.setText(t2.getText()+"\n"+t1.getText());
t1.setText(" ");
}
}
}
package cn.edu.nefu.zhihu;
public class Test2 {
public static void main(String[] args) {
new MyWindow4();
}
}
5.
package cn.edu.nefu.zhihu;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
public class MyWindow5 extends JFrame {
JMenuBar menubar;
JMenu menu1,menu2,menu3;
JMenuItem item1,item2,item3,item4,item5,item6,item7,item8;
public MyWindow5(String ss){
this.setTitle(ss);
this.setSize(200,250);
this.setVisible(true);
menubar=new JMenuBar();
this.setJMenuBar(menubar);
menu1=new JMenu("Style");
menu2=new JMenu("Color");
menu3=new JMenu("Exit");
menubar.add(menu1);
menubar.add(menu2);
menubar.add(menu3);
item1=new JMenuItem("Plane");
item2=new JMenuItem("Bold");
item3=new JMenuItem("Italic");
item4=new JMenuItem("Red");
item5=new JMenuItem("Green");
item6=new JMenuItem("Blue");
item7=new JMenuItem("User-defined");
item8=new JMenuItem("Close Window");
menu1.add(item1);
menu1.add(item2);
menu1.add(item3);
menu2.add(item4);
menu2.add(item5);
menu2.add(item6);
menu2.add(item7);
menu3.add(item8);
validate();
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
package cn.edu.nefu.zhihu;
public class Test2 {
public static void main(String[] args) {
new MyWindow5("a Window");
}
}
计算器的简易基本实现,只能实现整数(小数的也可以,但是界面不太友好)的加减乘除四则运算,且经过每一次计算之后都要进行清零,否则会计算有误。
代码实现如下:
package cn.edu.nefu.zhihu;
import java.awt.BorderLayout;
import java.awt.Font;
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 Jisuanqi extends JFrame{
JTextField wbk;
JButton b0,b1,b2,b3,b4,b5,b6,b7,b8,b9;
JButton b10,b11,b12,b13,b14;
JButton b15,b16;
JPanel mb;
double acc=0;
String yunSuanFu=null;
public Jisuanqi(String ss){
super(ss);
wbk=new JTextField("0");
b0=new JButton("0");
b1=new JButton("1");
b2=new JButton("2");
b3=new JButton("3");
b4=new JButton("4");
b5=new JButton("5");
b6=new JButton("6");
b7=new JButton("7");
b8=new JButton("8");
b9=new JButton("9");
b10=new JButton(".");
b11=new JButton("+");
b12=new JButton("-");
b13=new JButton("*");
b14=new JButton("/");
b15=new JButton("=");
b16=new JButton("C");
mb=new JPanel();
GridLayout grid=new GridLayout(4,4,4,12);
mb.setLayout(grid);
this.add(wbk,BorderLayout.NORTH);
wbk.setHorizontalAlignment(JTextField.RIGHT);
this.add(mb,BorderLayout.CENTER);
mb.add(b1);
mb.add(b2);
mb.add(b3);
mb.add(b11);
mb.add(b4);
mb.add(b5);
mb.add(b6);
mb.add(b12);
mb.add(b7);
mb.add(b8);
mb.add(b9);
mb.add(b13);
mb.add(b0);
mb.add(b10);
mb.add(b15);
mb.add(b14);
this.add(b16,BorderLayout.SOUTH);
A a=new A();
b0.addActionListener(a);
b1.addActionListener(a);
b2.addActionListener(a);
b3.addActionListener(a);
b4.addActionListener(a);
b5.addActionListener(a);
b6.addActionListener(a);
b7.addActionListener(a);
b8.addActionListener(a);
b9.addActionListener(a);
b10.addActionListener(a);
B b=new B();
b11.addActionListener(b);
b12.addActionListener(b);
b13.addActionListener(b);
b14.addActionListener(b);
b15.addActionListener(new C());
b16.addActionListener(new D());
b16.setFont(new Font("宋体",Font.BOLD,28));
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setBounds(300,300,250,325);
}
class A implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
String s=e.getActionCommand();//s为获取该事件的字符串
String ss=wbk.getText();//ss为文本框中的内容
if(ss.equals("0")||ss.equals("+")||ss.equals("-")||ss.equals("*")||ss.equals("/")){
wbk.setText(s);
}
else{
wbk.setText(ss+s);
}
}
}
class B implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
acc=Double.parseDouble(wbk.getText());
yunSuanFu=e.getActionCommand();
wbk.setText(e.getActionCommand());
}
}
class C implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
String ss=wbk.getText();
double sum1=Double.parseDouble(ss);
if(yunSuanFu.equals("+"))
wbk.setText(Double.toString(acc+sum1));
if(yunSuanFu.equals("-"))
wbk.setText(Double.toString(acc-sum1));
if(yunSuanFu.equals("*"))
wbk.setText(Double.toString(acc*sum1));
if(yunSuanFu.equals("/"))
wbk.setText(Double.toString(acc/sum1));
}
}
class D implements ActionListener{
@Override
public void actionPerformed(ActionEvent arg0) {
wbk.setText("0");
acc=0;
}
}
}
package cn.edu.nefu.zhihu;
public class Test2 {
public static void main(String[] args) {
new Jisuanqi("计算器");
}
}