1. 使用编写代码的方式,设计一个用户界面如下图所示:
//package Number1;
import java.awt.*;
import javax.swing.*;
public class Calculator {
public static void main(String[] args)
{
JFrame frm = new JFrame("Calculator");
frm.setLayout(new FlowLayout());
TextField tf1 = new TextField("",20);
TextField tf2 = new TextField("",20);
frm.add(tf1);
frm.add(tf2);
Button btn1 = new Button("+");
Button btn2 = new Button("-");
Button btn3 = new Button("*");
Button btn4 = new Button("/");
btn1.setForeground(Color.red);
btn2.setForeground(Color.green);
btn3.setForeground(Color.magenta);
btn3.setForeground(Color.blue);
frm.add(btn1);
frm.add(btn2);
frm.add(btn3);
frm.add(btn4);
TextField tfResult = new TextField("",20);
frm.add(tfResult);
frm.setBounds(500,300,200,200);
frm.setVisible(true);
frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
2. 使用编写代码的方式,设计一个含有菜单的用户界面.
Code and work:
package ChooseClasses;
import javax.swing.*;
import java.awt.*;
public class Choose {
public static void main(String[] args)
{
JFrame frm = new JFrame("选课系统");
frm.setBounds(500,200,400,400);
MenuBar mb = new MenuBar();
frm.setMenuBar(mb);
Menu jm1 = new Menu("文体类");
Menu jm2 = new Menu("计算机类");
Menu jm3 = new Menu("帮助");
mb.add(jm1);
mb.add(jm2);
mb.add(jm3);
jm1.add(new MenuItem("艺术欣赏"));
jm1.add(new MenuItem("健美操"));
jm1.add(new MenuItem("篮球"));
jm2.add(new MenuItem("Java 语言"));
jm2.add(new MenuItem("网络编程"));
jm3.add(new MenuItem("选课方法"));
frm.setVisible(true);
frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
3. 编写一个图形界面程序,运行后界面如下图,其中绘制矩形的方法是drawRect(40,50,120,80)。
代码及截图如下所示:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class TestDraw extends JFrame{
public void paint(Graphics g)
{
g.setColor(Color.black);
g.drawRect(40,50,120,80);
g.drawOval(40, 50,120, 80);
g.drawOval(40,80,30,20);
g.drawOval(40,70, 60, 40);
//g.fillRect(120,40,100,60);
}
public static void main(String[] args)
{
TestDraw f = new TestDraw();
f.setLayout(new FlowLayout());
f.setTitle("Paint");
f.setBounds(300,200,200,150);
//f.setSize(230,120);
f.setDefaultCloseOperation(EXIT_ON_CLOSE);
f.setVisible(true);
}
}
//此题中最关键的是掌握如何设置g.drawOval()的参数,只有当设置合适的参数才可以得到
//最后想要的结果。
4. (1) 编写画出笑脸(如下图左)的程序。
(2) 编写画出哭脸(如下图右)的程序。
(3) 编写“变脸”程序: 将1和2结合, 再加入一个事件处理程序mouseUp(),使程序运行后出现一张笑脸,鼠标点击一次则变成哭脸,再点击一次又变成笑脸,依次轮换。
代码及截图:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class FaceChange {
public static void main(String[] args)
{
JFrame jf = new JFrame("ChangeFace");
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setBounds(300,300,300,300);
jf.setVisible(true);
jf.add(new SmileAndSad());
jf.validate();
}
}
class SmileAndSad extends Canvas implementsMouseListener
{
int count = 0;
public SmileAndSad()
{
addMouseListener(this);
}
public void paint(Graphics g){
if(count==1){
g.drawString("笑脸",10,10);
g.setColor(Color.red);
g.drawOval(80,30,80,120);
g.drawArc(100,70,20,10,20,140);
g.drawArc(130,70,20,10,20,140);
g.drawArc(105,110,40,20,180,180);
g.drawString("哈哈哈哈!",120,200);
}
else{
g.drawString("哭脸", 10, 10);
g.drawOval(80,30,80,120);
g.drawArc(100,70,20,10,200,140);
g.drawArc(130,70,20,10,200,140);
g.drawArc(105,110,40,20,0,180);
g.drawString("呜呜呜呜!",120,200);
}
}
public void mousePressed(MouseEvent e){
if(e.getModifiers()==InputEvent.BUTTON1_MASK){
count=(1+count)%2;
repaint();
}
}
public void mouseReleased(MouseEvent e){}
public void mouseEntered(MouseEvent e){}
public void mouseClicked(MouseEvent e){}
public void mouseExited(MouseEvent e){}
public void update(Graphics g){
super.update(g);
paint(g);
}
}
5. 用编写代码方式,编写一个“Press Me”程序,运行后初始界面如下图左,它能累计点击按钮的次数,下图右是点击3次后的结果。
(窗口是FlowLayout布局, 宽170、高90, 文本框宽12)
代码及截图:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class Press extends JFrame{
public int numClicks = 0;
//JTextField jtf = new JTextField();
//设置文本框的宽度;
private JTextField jtf = new JTextField(12);
private JButton jbt = new JButton("Pressme");
public Press()
{
super();
setLayout(new FlowLayout());
setSize(170,90);
setTitle("点死你");
add(jtf);
add(jbt);
setBounds(100,100,200,200);
setVisible(true);
jtf.setText("您还没点我啊!");
//String temp;
jbt.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
numClicks++;
//jtf.setText("");
//temp =
jtf.setText("您已经点了我"+numClicks +"次了");
}
});
}
public static void main(String[] args)
{
new Press();
}
}
6. 设计一个“自助早餐”的图形界面事件处理程序,运行后界面如下图左;选择早点后界面如下图右;点击“确定”则退出。(提示:需要编写列表的itemStateChanged()事件处理方法)
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import javax.swing.event.*;
import java.awt.event.*;
public class Test extends Frame
{
public static void main(String[] args)
{
Test tsm = new Test();
tsm.setTitle("点早餐了");
//tsm.setBackground(Color.ORANGE);
tsm.setLayout(new FlowLayout());
final List list = new List(10,true);
list.add(" 名称 单价 ");
list.add("****************");
list.add(" 馒头 0.2元");
list.add(" 花卷 0.3元");
list.add(" 面包 0.5元");
list.add(" 蛋糕 0.8元");
list.add(" 豆浆 0.5元");
list.add(" 牛奶 1.0元");
Panel p1 = new Panel();
p1.setLayout(new BorderLayout());
Label l1 = new Label("请选择早点");
p1.add("North",l1);
p1.add("South",list);
tsm.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
tsm.add(p1);
Label l2 = new Label("您选择了:");
final TextArea foodResult = new TextArea(10,18);
final float[] money ={ 0.20f, 0.30f, 0.50f, 0.80f, 0.50f,1.00f };// 设置单价;
list.addItemListener(new ItemListener()
{
public void itemStateChanged(ItemEvent evt)
{
float total = 0.0f;
int select = list.getSelectedIndex() - 2;
float a = money[select];
//a += 0.3;
String s = String.valueOf(a);
String item1 = list.getItem(select+2);
//String item2 =list.getItem(select+1);
foodResult.append(item1);
foodResult.append("\n");
//foodResult.append(item2);
foodResult.append("\n");
foodResult.append("\n");
foodResult.append(" 总计 : " + s + "元");
}
});
Button btn = new Button("确定");
Panel p2 = new Panel();
p2.setLayout(new BorderLayout());
p2.add("North",l2);
p2.add(foodResult);
tsm.add(p2);
tsm.add(btn);
btn.addActionListener(new ActionListener()
{
public voidactionPerformed(ActionEvent e) {
System.exit(0);
}
});
tsm.setBackground(Color.orange);
tsm.setBounds(100,100,500,300);
tsm.setVisible(true);
}
}
(注:此题还有一定的问题。由于考试原因,暂时把程序做到这里了)
7.开发一个加、减、乘、除四则运算器。
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Calculator {
public static void main(String[] args)
{
JFrame frm = new JFrame("Calculator");
frm.setLayout(new FlowLayout());
final TextField tf1 = new TextField("",20);
String s1 = tf1.getText();
//double d1 =Double.parseDouble(s1);
final TextField tf2 = new TextField("",20);
frm.add(tf1);
frm.add(tf2);
Button btn1 = new Button("+");
Button btn2 = new Button("-");
Button btn3 = new Button("*");
Button btn4 = new Button("/");
btn1.setForeground(Color.red);
btn2.setForeground(Color.green);
btn3.setForeground(Color.magenta);
btn3.setForeground(Color.blue);
frm.add(btn1);
frm.add(btn2);
frm.add(btn3);
frm.add(btn4);
final TextField tfResult = new TextField("",20);
frm.add(tfResult);
frm.setBounds(500,300,200,200);
//实现计算器的功能;
// 加分功能的实现;
btn1.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
String s1 = tf1.getText();
double d1 = Double.parseDouble(s1);
String s2 = tf2.getText();
double d2 = Double.parseDouble(s2);
double d = d1 + d2;
String res = String.valueOf(d);
tfResult.setText(res);
}
});
// 减法功能的实现;
btn2.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
String s1 = tf1.getText();
double d1 = Double.parseDouble(s1);
String s2 = tf2.getText();
double d2 = Double.parseDouble(s2);
double d = d1 - d2;
String res = String.valueOf(d);
tfResult.setText(res);
}
});
// 乘法功能的实现;
btn3.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
String s1 = tf1.getText();
double d1 = Double.parseDouble(s1);
String s2 = tf2.getText();
double d2 = Double.parseDouble(s2);
double d = d1 * d2;
String res = String.valueOf(d);
tfResult.setText(res);
}
});
// 除法功能的实现;
btn4.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
String s1 = tf1.getText();
double d1 = Double.parseDouble(s1);
String s2 = tf2.getText();
double d2 = Double.parseDouble(s2);
String res = new String();
if(d2==0)
{
res = "Error";
}
else{
double d = d1/d2;
res = String.valueOf(d);
}
tfResult.setText(res);
}
});
frm.setVisible(true);
frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
(二)Applet编程
1.编写一个Applet,显示一幅图象并配上背景音乐。
import java.awt.*;
import java.applet.*;
import java.applet.Applet;
public class applet extends Applet {
Image img1;
AudioClip aud;
public void init()
{
this.setLocation(10,10);
this.setSize(300,300);
img1 = this.getImage(getCodeBase(),"Frank.JPG");
aud = this.getAudioClip(getCodeBase(),"001.au");
//this.setSize(10);
}
public void paint(Graphicsg)
{
g.drawImage(img1,10,10,200,200,Color.green,this);
}
public void start(){
aud.play();
}
public void stop()
{
aud.stop();
}
}
+music
2.编写一个Applet或JApplet,实现一个小球沿抛物线移动,到达地面时播放一个响声。(利用抛物线方程 y=a(x-b)2计算小球位置,b是小球离地面的最大高度 )
代码及截图:
import java.awt.*;
import javax.swing.*;
public class applet extends JApplet implements Runnable
{
private static final long serialVersionUID = 1l;
int x;
int y;
//init
public void init()
{
x = 0;
}
public void start()
{
Thread ani = new Thread(this);
ani.start();
}
public void run()
{
while(true)
{
if((x >= 1)&&(x <= 16))
repaint();
try
{
Thread.sleep(1000);
}catch(InterruptedException e){
}
}
}
public void paint(Graphics g)
{
int a = 10;
int b = 9;
g.setColor(Color.red);
x= x+1;
y = (x-b)*(x-b);
g.fillOval(30*x, a*y, 10, 10);
if(x==16)
play(getCodeBase(),"001.au");
}
public void update(Graphics g)
{
paint(g);
}
}