java实验报告实验六Java图形用户界面
信息工程学院
Java程序设计实习报告
JAVA图形用户界面
实验六Java图形用户界面
1.实验目的
(1)掌握图形用户界面基本组件。
(2)了解如何使用布局管理器对组件进行管理。
(3)掌握Java事件处理机制。
2.实验内容
实验题1 编写一个模拟计算器的程序,使用面板和网格布局,添加一个文本框,10个数字按钮(0-9),4个加减乘除按钮,一个等号按钮,一个清除按钮,要求将计算公式和结果显示在文本框中。
运行结果:
实验报告的内容与格式按任课教师的要求书写。
加法:
主要代码:
private void initComponents() {
jButton1 = new javax.swing.JButton();
jButton2 = new javax.swing.JButton();
jButton3 = new javax.swing.JButton();
jButton4 = new javax.swing.JButton();
jButton5 = new javax.swing.JButton();
jButton6 = new javax.swing.JButton();
jButton7 = new javax.swing.JButton();
jButton8 = new javax.swing.JButton();
jButton9 = new javax.swing.JButton();
jButton10 = new javax.swing.JButton();
jButton11 = new javax.swing.JButton();
jButton12 = new javax.swing.JButton();
jButton13 = new javax.swing.JButton();
jButton14 = new javax.swing.JButton();
jButton15 = new javax.swing.JButton();
jTextField1 = new javax.swing.JTextField();
setStub(null);
jButton1.setText("3");
jButton1.addActionListener(new
java.awt.event.ActionListener() {
public void
actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
jButton2.setText("1");
jButton2.addActionListener(new
java.awt.event.ActionListener() {
public void
actionPerformed(java.awt.event.ActionEvent evt) {
jButton2ActionPerformed(evt);
}
});
jButton3.setText("5");
jButton3.addActionListener(new
java.awt.event.ActionListener() {
public void
actionPerformed(java.awt.event.ActionEvent evt) {
jButton3ActionPerformed(evt);
}
});
jButton4.setText("2");
jButton4.addActionListener(new
java.awt.event.ActionListener() {
public void
actionPerformed(java.awt.event.ActionEvent evt) {
jButton4ActionPerformed(evt);
}
});
jButton5.setText("6");
jButton5.addActionListener(new
java.awt.event.ActionListener() {
public void
actionPerformed(java.awt.event.ActionEvent evt) {
jButton5ActionPerformed(evt);
}
});
jButton6.setText("8");
jButton6.addActionListener(new
java.awt.event.ActionListener() {
public void
actionPerformed(java.awt.event.ActionEvent evt) {
jButton6ActionPerformed(evt);
}
});
jButton7.setText("4");
jButton7.addActionListener(new
java.awt.event.ActionListener() {
public void
actionPerformed(java.awt.event.ActionEvent evt) {
jButton7ActionPerformed(evt);
}
});
jButton8.setText("7");
jButton8.addActionListener(new
java.awt.event.ActionListener() {
public void
actionPerformed(java.awt.event.ActionEvent evt) {
jButton8ActionPerformed(evt);
}
});
jButton9.setText("0");
jButton9.addActionListener(new
java.awt.event.ActionListener() {
public void
actionPerformed(java.awt.event.ActionEvent evt) {
jButton9ActionPerformed(evt);
}
});
jButton10.setText("9");
jButton10.addActionListener(new
java.awt.event.ActionListener() {
public void
actionPerformed(java.awt.event.ActionEvent evt) {
jButton10ActionPerformed(evt);
}
});
jButton11.setText("\u00f7");
jButton11.addActionListener(new
java.awt.event.ActionListener() {
public void
actionPerformed(java.awt.event.ActionEvent evt) {
jButton11ActionPerformed(evt);
}
});
jButton12.setText("\u00d7");
jButton12.addActionListener(new
java.awt.event.ActionListener() {
public void
actionPerformed(java.awt.event.ActionEvent evt) {
jButton12ActionPerformed(evt);
}
});
jButton13.setText("-");
jButton13.addActionListener(new
java.awt.event.ActionListener() {
public void
actionPerformed(java.awt.event.ActionEvent evt) {
jButton13ActionPerformed(evt);
}
});
jButton14.setText("+");
jButton14.addActionListener(new
java.awt.event.ActionListener() {
public void
actionPerformed(java.awt.event.ActionEvent evt) {
jButton14ActionPerformed(evt);
}
});
jButton15.setText("=");
jButton15.addActionListener(new
java.awt.event.ActionListener() {
public void
actionPerformed(java.awt.event.ActionEvent evt) {
jButton15ActionPerformed(evt);
}
});
实验题2 编写一个程序,有一个窗口,该窗口为BorderLayout布局。窗口的中心添加一个Panel容器:pCenter,pCenter的布局是7行7列的GridLayout布局,pCenter 的中放置49个标签,用来显示日历。窗口北面添加一个Panel容器pNorth,其布局是FlowLayout布局,pNorth放置两个按钮:nextMonth和previousMonth按钮,单击nextMonth,可以显示当前月的下一个月的日历;单击previousMonth按钮,可以显示当前月的上一个月的日历。窗口的南面添加一个Panel容器pSouth,其布局是FlowLayout 布局,pSouth中放置一个标签用来显示一些信息。运行结果如图所示。
图3.8 运行结果图[基本要求] 编写完整程序。
运行结果:
主要代码:
private JLabel[] buttonDay = new JLabel[42]; private JButton[] buttonWeek = new JButton[7]; private JLabel labelMonth = new JLabel();
private JButton buttonLastMonth = new JButton(); private JButton buttonNextMonth = new JButton(); private JPanel pCenter=new JPanel();
private JPanel pNorth=new JPanel();
private JPanel pSouth=new JPanel();
private JLabel time=new JLabel();
public Calender() {
super("Calender");
setBounds(250, 200, 600, 500);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
buttonLastMonth.setText("上月");
buttonLastMonth.addActionListener(this);
pNorth.add(buttonLastMonth);
buttonNextMonth.setText("下月");
buttonNextMonth.addActionListener(this);
pNorth.add(buttonNextMonth);
getContentPane().add(pNorth,BorderLayout.NORTH);
getContentPane().add(pCenter,BorderLayout.CENTER);
pCenter.setLayout(new GridLayout(7,7));
for (int i = 0; i < 7; i++) {
buttonWeek[i] = new JButton();
buttonWeek[i].setText(stringWeekCn[i]);
pCenter.add(buttonWeek[i]);
}
for (int i = 0; i < 42; i++) {
buttonDay[i] = new JLabel();
buttonDay[i].setText(" ");
pCenter.add(buttonDay[i]);
}
实验题3 实现如图3.9所示的布局方式
功能:前两个文本框输入整型数据。第三个文本框存放前两个文本框数据之和。
要求如下:
第一个文本框的数据是[100,200],如果超出该范围弹出对话框提示用户。弹出提示对话框的时刻是光标离开第一个文本框时。
图3.9 求和
运行结果:
检验输入数据范围:
主要代码:
class MouseHander extends MouseAdapter
{
public MouseHander(JTextField c)
{
current=c;
}
public void mousePressed(MouseEvent event) {
if(current==result)
{
double
firstNumber=Double.parseDouble(first.getText());
double
secondNumber=Double.parseDouble(second.getText());
double Result=firstNumber+secondNumber;
result.setText(""+Result);
}
else current.setText("");
}
private JTextField current;
}
class MouseMotionHander extends MouseMotionAdapter
{
public void mouseMoved(MouseEvent event)
{
double
number=Double.parseDouble(first.getText());
if(number<100||number>200)
{
int
type=JOptionPane.ERROR_MESSAGE;
JOptionPane.showMessageDialog(null,new String("输入数字必须在100~200之间"),"提示", 2);
}
}
}
实验题4 编写一个显示图像文件的Application应用程序,在该程序JFrame窗体中添加JPanel面板和一个JToolBar工具栏,在工具栏上添加一个JButton“打开”按扭,单击“打开”按纽,弹出JFileChooser文件打开选择对话框,选择图像文件后将其显示在JPnel面板中。
运行结果:
主要代码:
public class NewJFrame extends javax.swing.JFrame { private JPanel jPanel1;
private JPanel jPanel2;
private JButton jButton2;
private JButton jButton1;
private String filePath = "";
/**
*Auto-generated main method to display this JFrame
*/
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
NewJFrame inst = new NewJFrame();
inst.setLocationRelativeTo(null);
inst.setVisible(true);
}
});
}
public NewJFrame() {
super();
initGUI();
}
private void initGUI() {
try {
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
{
jPanel1 = new JPanel(true);
FlowLayout jPanel1Layout = new FlowLayout();
getContentPane().add(jPanel1,
BorderLayout.NORTH);
jPanel1.setPreferredSize(new
java.awt.Dimension(384, 43));
jPanel1.setLayout(jPanel1Layout);
{
jButton2 = new JButton();
jPanel1.add(jButton2);
jButton2.setText("Open");
jButton2.setBounds(104, 12, 62, 22);
jButton2.setPreferredSize(new
java.awt.Dimension(76, 22));
jButton2.addActionListener(new
ActionListener() {
public void
actionPerformed(ActionEvent evt) {
jButton2ActionPerformed(evt);
}
});
}
{
jButton1 = new JButton();
jPanel1.add(jButton1);
jButton1.setText("Close");
jButton1.setBounds(204, 12, 62, 22);
jButton1.setPreferredSize(new
java.awt.Dimension(72, 22));
jButton1.addMouseListener(new MouseAdapter() {
public void
mousePressed(MouseEvent evt) {
System.exit(0);
//TODO add your code for jButton1.mousePressed
}
});
}
}
{
jPanel2 = new JPanel();
getContentPane().add(jPanel2,
BorderLayout.CENTER);
}
pack();
setSize(400, 300);
} catch (Exception e) {
//add your error handling code here
e.printStackTrace();
}
}
private void jButton2ActionPerformed(ActionEvent evt) {
String action = evt.getActionCommand();
JFileChooser fileChooser = new JFileChooser();
int index = fileChooser.showOpenDialog(getContentPane());
if(index == JFileChooser.APPROVE_OPTION)
{
File selectedFile = fileChooser.getSelectedFile(); //取得选中的文件
filePath = selectedFile.getPath();
filePath = filePath.replace('\\','/');
ImageIcon icon = new ImageIcon(filePath);
JLabel label = new JLabel(icon,JLabel.CENTER);
JLabel p=new JLabel("图片路径:" + filePath);
jPanel2.add(p,BorderLayout.SOUTH);
jPanel2.add(label);
jPanel2.update(null);
}
}
}
实验题5使用SWT技术完成图3.10 所示图形界面的制作。要求“查询结果”用group组件。
图3.10数据查询界面
运行结果;
主要代码:
public class Search extends https://www.360docs.net/doc/4c1659279.html,posite { private Composite composite1;
private Composite composite2;
private Group group1;
private Text text4;
private Label label4;
private Text text3;
private Label label3;
private Text text2;
private Label label2;
private Button button2;
private Button button1;
private Text text1;
private Label label1;
{
//Register as a resource user - SWTResourceManager will
//handle the obtaining and disposing of resources
SWTResourceManager.registerResourceUser(this);
}
public Search(Composite parent, int style) {
super(parent, style);
initGUI();
}
/**
* Initializes the GUI.
*/
private void initGUI() {
try {
this.setSize(new
org.eclipse.swt.graphics.Point(400,300));
this.setBackground(SWTResourceManager.getColor(192, 192, 192));
FormLayout thisLayout = new FormLayout();
this.setLayout(thisLayout);
{
composite1 = new Composite(this, SWT.NONE);
FormLayout composite1Layout = new
FormLayout();
FormData composite1LData = new FormData();
composite1LData.left = new FormAttachment(0, 1000, 0);
composite1LData.top = new FormAttachment(0, 1000, 0);
composite1LData.width = 400;
composite1LData.height = 300;
composite1.setLayoutData(composite1LData);
composite1.setLayout(composite1Layout);
{
group1 = new Group(composite1, SWT.NONE);
GridLayout group1Layout = new GridLayout();
group1Layout.marginBottom = 30;
group1Layout.numColumns = 2;
group1Layout.verticalSpacing = 15;
group1Layout.marginTop = 10;
group1.setLayout(group1Layout);
FormData group1LData = new
FormData();
group1LData.left = new FormAttachment(0, 1000, 38);
group1LData.top = new
FormAttachment(0, 1000, 106);
group1LData.width = 318;
group1LData.height = 145;
group1.setLayoutData(group1LData);
group1.setText("\u67e5\u8be2\u7ed3\u679c");
group1.setFont(SWTResourceManager.getFont("微软雅黑", 11, 0, false, false));
{
label2 = new Label(group1, SWT.NONE);
GridData label2LData = new GridData();
label2LData.widthHint = 70;
label2LData.heightHint = 25;
label2.setLayoutData(label2LData);
label2.setText("\u5b66\u53f7\uff1a");
label2.setFont(SWTResourceManager.getFont("微软雅黑", 11, 0, false, false));
}
{
GridData text2LData = new GridData();
text2LData.widthHint = 181;
text2LData.heightHint = 27;
text2 = new Text(group1, SWT.NONE);
text2.setLayoutData(text2LData);
}
{
label3 = new Label(group1, SWT.NONE);
GridData label3LData = new GridData();
label3LData.widthHint = 63;
label3LData.heightHint = 23;
label3.setLayoutData(label3LData);
label3.setText("\u59d3\u540d\uff1a");
label3.setFont(SWTResourceManager.getFont("微软雅黑", 11, 0, false, false));
}
{
GridData text3LData = new GridData();
text3LData.widthHint = 181;
text3LData.heightHint = 27;
text3 = new Text(group1, SWT.NONE);
text3.setLayoutData(text3LData);
}
{
label4 = new Label(group1, SWT.NONE);
GridData label4LData = new GridData();
label4LData.widthHint = 57;
label4LData.heightHint = 28;
label4.setLayoutData(label4LData);
label4.setText("\u5e74\u9f84\uff1a");
label4.setFont(SWTResourceManager.getFont("微软雅黑", 11, 0, false,
}
{
GridData text4LData = new GridData();
text4LData.widthHint = 182;
text4LData.heightHint = 31;
text4 = new Text(group1, SWT.NONE);
text4.setLayoutData(text4LData);
}
}
{
composite2= new Composite(composite1, SWT.NONE);
GridLayout composite2Layout = new GridLayout();
composite2Layout.numColumns = 2;
composite2Layout.marginLeft = 40;
composite2Layout.horizontalSpacing = 10;
composite2Layout.verticalSpacing = 15;
FormData composite2LData = new FormData();
composite2LData.left = new FormAttachment(0, 1000, 12);
composite2LData.top = new FormAttachment(0, 1000, 12);
composite2LData.width = 376;
composite2LData.height = 88;
composite2.setLayoutData(composite2LData);
composite2.setLayout(composite2Layout);
{
label1= new Label(composite2,
GridData label1LData = new GridData();
label1LData.widthHint = 96;
label1LData.heightHint = 22;
label1.setLayoutData(label1LData);
label1.setText("\u8bf7\u8f93\u5165\u5b66\u53f7\uff1a");
label1.setFont(SWTResourceManager.getFont("微软雅黑", 12, 0, false, false));
}
{
GridData text1LData = new GridData();
text1LData.widthHint = 182;
text1LData.heightHint = 28;
text1 = new Text(composite2, SWT.NONE);
text1.setLayoutData(text1LData);
}
{
button1 = new
Button(composite2, SWT.PUSH | SWT.CENTER);
GridData button1LData = new GridData();
button1LData.widthHint = 70;
button1LData.heightHint = 27;
button1.setLayoutData(button1LData);
button1.setText("\u786e\u5b9a");
}
{
button2 = new