山西大学计算机与信息技术学院
实姓 名 苏文杰 学 号 验报告 专业班级 计算机科学与技术三班 实验日期 杨陟卓 批改日期 2017/12/4 201601001026 课程名称 Java实验 成 绩 实验名称 指导教师 实验 8 JAVAFX程序设计 一、实验目的 掌握常用GUI控制组件及其事件处理。 二、实验内容 1.编程包含一个标签和一个按钮,单击按钮时,标签的内容在“你好”和“再见”之间切换。分别用本类(该类自身),外部类,内部类,匿名内部类,以及lambda表达式完成。 程序代码: package sd8; import java.awt.GridLayout; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; public class Test extends JFrame implements MouseListener { private JLabel label = new JLabel(\你好\ private JButton btn = new JButton(\ public Test(){ setLayout(new GridLayout(2, 1)); setBounds(200, 200, 250, 250); add(label); add(btn); btn.addMouseListener(this); super.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setVisible(true); pack(); } public static void main(String[] args) { new Test(); new Thread(() -> new Test()).start(); } public void mouseClicked(MouseEvent e) { if(label.getText().equals(\你好\ label.setText(\再见\ }else{
label.setText(\你好\ } } public void mouseEntered(MouseEvent e) {} public void mouseExited(MouseEvent e) {} public void mousePressed(MouseEvent e) {} public void mouseReleased(MouseEvent e) {} } 运行结果贴图: 2.编程包含一个文本框和一个文本区域,文本框内容改变时,将文本框中的内容显示在文本区域中;在文本框中按回车键时,清空文本区域的内容。 程序代码: package sd2; import java.awt.Color; import java.awt.GridLayout; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JTextArea; import javax.swing.JTextField; import javax.swing.border.TitledBorder; public class ShowText extends JFrame { private static final long serialVersionUID = 1L; private JTextField text1; private JTextArea text2; public ShowText() { super(\
JPanel p1 = new JPanel(); p1.setBackground(Color.WHITE); p1.setBorder(new TitledBorder(\文本框\ text1 = new JTextField(10); text1.addKeyListener(new TextListener()); p1.add(text1); JPanel p2 = new JPanel(); p2.setBackground(Color.WHITE); p2.setBorder(new TitledBorder(\文本区域\ text2 = new JTextArea(\原文本\ text2.setLineWrap(true); text2.setEditable(false); p2.add(text2); setLayout(new GridLayout(2, 1, 0, 5)); add(p1); add(p2); setSize(200, 200); setVisible(true); this.setLocationRelativeTo(null); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } private class TextListener implements KeyListener { public void keyPressed(KeyEvent e) { } public void keyReleased(KeyEvent e) { if (e.getKeyChar() != KeyEvent.VK_ENTER) text2.setText(text1.getText()); } public void keyTyped(KeyEvent e) { if (e.getKeyChar() == KeyEvent.VK_ENTER) text2.setText(null); } } public static void main(String[] args) { JFrame frame = new ShowText(); } } 运行结果贴图:
3.编程包含一个复选按钮和一个普通按钮,复选按钮选中时,普通按钮的背景色为青色,未选中时为灰色。 程序代码: package sd3; import java.awt.Color; import java.awt.GridLayout; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JFrame; import javax.swing.JPanel; public class ChangeButtonColor extends JFrame { private static final long serialVersionUID = 1L; private JButton button; private JCheckBox checkBox; public ChangeButtonColor() { super(\改变按钮颜色\ JPanel p1 = new JPanel(); p1.setBackground(Color.WHITE); setLayout(new GridLayout(2, 1)); button = new JButton(\ button.setSize(20, 20); button.setBackground(Color.GRAY); p1.add(button); JPanel p2 = new JPanel(); p2.setBackground(Color.BLUE); checkBox = new JCheckBox(); checkBox.addItemListener(new checkBoxListener()); p2.add(checkBox); add(p1); add(p2); setSize(200, 200);
setVisible(true); this.setLocationRelativeTo(null); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } private class checkBoxListener implements ItemListener { public void itemStateChanged(ItemEvent e) { if (checkBox.isSelected()) button.setBackground(Color.CYAN); else button.setBackground(Color.GRAY); } } public static void main(String[] args) { ChangeButtonColor b = new ChangeButtonColor(); } } 运行结果贴图: