——————————————————————————————————
实验五 GUI界面制作-AWT、Swing与NetBeans
实验目的:
1.深入理解、掌握Java图形界面编程、事件模型 2.掌握NetBeans的基本使用方法和常用属性的配置 3.利用NetBeans的Mattise组件进行GUI编程。 知识准备:
一.AWT、布局管理器、常用组件、容器、事件处理模型。 二.Swing组件
三.Java事件处理机制 四.NetBeans
实验内容:(选择其一)
一.利用Canvas实现画图软件的功能。
二.利用Graphics类在Frame上画出各种图形并填充。
List应用:点击“>>”按钮时,把左边文本区域的内容添加到右边文本区域。“<<”功能相反。 三.图形日历的实现 四.记事本的实现
五.华容道游戏的实现
六.使用Matisse创建GUI应用程序:名片管理程序,完成名片的增加、删除、修改等集成界面并完成事件处理代码的编写。 import java.awt.Color;
import java.awt.Container;
import java.awt.Rectangle;
import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Calendar; import javax.swing.*; /**
三.图形日历的实现 */
public class Exam5 {
public static void main(String[] args) { new Mycalendar(); } }
class Mycalendar{
Calendar myDate = Calendar.getInstance(); JLabel lyear = new JLabel(\年:\ JLabel lmonth = new JLabel(\月:\ JButton button = new JButton(\确定\
JTextField textyear = new
JTextField(String.valueOf(myDate.get(Calendar.YEAR)),5); JTextField textmonth = new
JTextField(String.valueOf(myDate.get(Calendar.MONTH)+1),5);
String[] str = new String[]{\星期日\星期一\星期二\星期三\星期四\星期五\星期六\
JLabel[] label = new JLabel[7]; public Mycalendar(){
JFrame frame = new JFrame();
frame.setBounds(400,150,490,300); frame.setLayout(null); frame.setVisible(true);
Container content=frame.getContentPane(); content.setBackground(Color.green);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
lyear.setBounds(140,10,50,20); textyear.setBounds(155,10,50,20);
lmonth.setBounds(250,10,50,20); textmonth.setBounds(275,10,50,20);
button.setBounds(355,10,60,25);
frame.add(lyear); frame.add(textyear); frame.add(lmonth); frame.add(textmonth); frame.add(button);
for(int i=0;i<7;i++){
label[i]=new JLabel(str[i]);
label[i].setBounds(new Rectangle(30+i*60,40,67,34)); frame.add(label[i]); }
final JLabel[] numberLabel= new JLabel[37]; for(int i=0,l=0,h=0;i<37&&l<7&&h<7;i++){ if(i%7==0){ l=0; h++; } else
l++;
numberLabel[i] = new JLabel(\ numberLabel[i].setBounds(new Rectangle(30+l*60,h*30-30+75,60,26)); frame.add(numberLabel[i]); }
MyDateCompute myDateCompute = new
MyDateCompute(Integer.parseInt(textyear.getText()),Integer.parseInt(textmonth.getText()));
int dateNumber=myDateCompute.getDateNumber();
myDate.set(Integer.parseInt(textyear.getText()),Integer.parseInt(textmonth.getText())-1,1);
int skip = myDate.get(Calendar.DAY_OF_WEEK);
for(int i=1,j=skip-1;i<=dateNumber;i++){
numberLabel[j].setText(String.valueOf(i)); j++; }
class MyEventExam5 implements ActionListener{ public void actionPerformed(ActionEvent e){
int year = Integer.parseInt(textyear.getText());
int month = Integer.parseInt(textmonth.getText());
if(month<1||month>12){
JDialog dialog = new JDialog(); dialog.setVisible(true);
dialog.setBounds(400,200,400,400); JLabel dialogLabel = new JLabel(\日期输入错误!\
dialog.add(dialogLabel); }
else{
MyDateCompute myDateCompute = new MyDateCompute(year,month);
myDate.set(year,month-1,1);
int dateNumber=myDateCompute.getDateNumber(); int skip = myDate.get(Calendar.DAY_OF_WEEK);
for(int i=0;i<37;i++)
numberLabel[i].setText(\
for(int i=1,j=skip-1;i<=dateNumber;i++){
numberLabel[j].setText(String.valueOf(i)); j++; } } } }
textyear.addActionListener(new MyEventExam5()); textmonth.addActionListener(new MyEventExam5()); button.addActionListener(new MyEventExam5()); } }
class MyDateCompute{
private boolean leap_year=false; private int dateNumber;
public MyDateCompute(int year,int month){
if(year@0==0||(year%4==0&&year0!=0)) leap_year=true; int february=28; if(leap_year) february=29; switch(month){
case 1:case 3:case 5: case 7:case 8:case 10:case 12:
dateNumber=31;break;
case 4:case 6:case 9: case 11: dateNumber=30;break;
case 2:dateNumber=february; } }
public boolean getLeap_year(){ return leap_year; }
public int getDateNumber(){ return dateNumber; } }