Java基础 实验八 图形用户界面(文末送彩蛋)
一、实验内容
1)编程:创建有一个文本框和三个按钮的小程序。当按下每个按钮时,使不同的文字显示在文本框中。
2)编程:创建一用户登录界面,接受用户输入的帐号和密码,给三次输入机会。
3)编程:编写成人标准身高和体重互查的程序。身高和体生在两个不同的文本框中输入,要求输入一个。输入身高则输出体重,输入体重则输出身高。用一个按钮启动互查。互查的公式为: 体重=身高-100。
4)编程:创建三个JSlider滚动条和一个JLabel标签对象,滚动条用来调整红、绿、蓝三色的比例,每个滚动条加标题边界、设置刻度 自定)和标注。当拖动滑块修改三色比例时,变化标签的背景色。
5)编程:创建一个文本框、三个单选按钮、一个标签和一个按钮,文本框用来输入自然数N,根据选择单选按钮的不同,分别计算:1+2+…N或1*2*…N或1+1/2+1/3+…1/N,计算结果在标签中显示。
二、实验代码
1、OneQuestion.java
package exceptioneight;
import java.awt.Container;
import java.awt.FlowLayout;
import static java.awt.FlowLayout.CENTER;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.WindowConstants;
/**** @author 31621*/
public class OneQuestion extends JFrame{private JPanel panel = new JPanel();private JPanel pane = new JPanel();private JTextArea textArea = new JTextArea(5, 30);//指定初始文字和宽度private JButton textOne = new JButton("文本一");private JButton textTwo = new JButton("文本二");private JButton textThree = new JButton("文本三");public OneQuestion() {super("显示不同文本");//setBounds(600, 400, 500, 200);setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);//关闭窗口,不结束程序BoxLayout box = new BoxLayout(this.getContentPane(), BoxLayout.Y_AXIS);setLayout(box);//容器布局为:方框垂直布局//控件属性panel.setLayout(new FlowLayout(CENTER));pane.setLayout(new FlowLayout(CENTER));textArea.setEditable(false);//文本框不可编辑textArea.setLineWrap(true);textArea.setText(" Hello world!");//事件textOne.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent evt) {textArea.setText("文本一111111111111");}});textTwo.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent evt) {textArea.setText("文本二2222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222");}});textThree.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent evt) {textArea.setText("文本三33333333333333");}});//布局panel.add(textArea);pane.add(textOne);pane.add(textTwo);pane.add(textThree);add(panel);add(pane);pack();setLocation(720, 260);setVisible(true); }
}
2、TwoQuestion.java
package exceptioneight;import java.awt.FlowLayout;
import static java.awt.FlowLayout.CENTER;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;/**问题二:* 创建一用户登录界面,接受用户输入的帐号和密码,给三次输入机会。*/
public class TwoQuestion extends JFrame{private int count = 3;//记录登录的次数private JLabel jl1 = new JLabel("用户名:");private JLabel jl2 = new JLabel(" 密码 :");private JTextField jtf1 = new JTextField(16);private JPasswordField jpf1 = new JPasswordField(16);private JButton jb1 = new JButton("登录");private JPanel jp1 = new JPanel();private JPanel jp2 = new JPanel();private FlowLayout fl1 = new FlowLayout(CENTER);private BoxLayout bl1 = new BoxLayout(this.getContentPane(), BoxLayout.Y_AXIS);public TwoQuestion() {super("登录");setLayout(bl1);setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);//关闭窗口,不结束程序jp1.setLayout(fl1);jp2.setLayout(fl1);//控件属性//事件jb1.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent evt) {String acc = "yudong";String pass = "yudong";String account = jtf1.getText();char[] password = jpf1.getPassword();String newPass = new String(password);if(count > 0) {if(account.equals(acc) && pass.equals(newPass)) {JOptionPane.showMessageDialog(null, "登录成功");} else {count--;JOptionPane.showMessageDialog(null, "登录失败!还剩"+count+"次机会登录!");}
// if(count == 0) {//可以关闭按钮
// jb1.setEnabled(false);
// }} else {JOptionPane.showMessageDialog(null, "拒绝登录!您超过3次登录失败!");}}});//布局jp1.add(jl1);jp1.add(jtf1);jp2.add(jl2);jp2.add(jpf1);add(jp1);add(jp2);add(jb1);pack();setLocation(720, 260);setVisible(true);}}
3、ThreeQuestion.java
package exceptioneight;import java.awt.FlowLayout;
import static java.awt.FlowLayout.CENTER;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;/**编程三:* 编写成人标准身高和体重互查的程序。* 身高和体生在两个不同的文本框中输入,要求输入一个。* 输入身高则输出体重,输入体重则输出身高。* 用一个按钮启动互查。互查的公式为: 体重=身高-100。*/
public class ThreeQuestion extends JFrame{private JLabel jl1 = new JLabel("身高:");private JLabel jl2 = new JLabel("体重:");private JTextField jtf1 = new JTextField(16);private JTextField jtf2 = new JTextField(16);private JButton jb1 = new JButton("开始转换");private JPanel jp1 = new JPanel();private JPanel jp2 = new JPanel();private JPanel jp3 = new JPanel();private FlowLayout fl1 = new FlowLayout(CENTER);private BoxLayout bl1 = new BoxLayout(this.getContentPane(), BoxLayout.Y_AXIS);public ThreeQuestion() {super();setLayout(bl1);setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);//关闭窗口,不结束程序jp1.setLayout(fl1);jp2.setLayout(fl1);jp3.setLayout(fl1);//控件属性//事件jb1.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent evt) {String height = jtf1.getText();String weight = jtf2.getText();if(!height.equals("")) {int h = Integer.parseInt(height);jtf2.setText(String.valueOf((h - 100)));} else {int w = Integer.parseInt(weight);jtf1.setText(String.valueOf((w + 100)));}}});//布局jp1.add(jl1);jp1.add(jtf1);jp2.add(jl2);jp2.add(jtf2);jp3.add(jb1);add(jp1);add(jp2);add(jp3);pack();setLocation(720, 260);setVisible(true);}
}
4、NewFourQuestion.java
package exceptioneight;import java.awt.Color;
import java.awt.FlowLayout;
import static java.awt.FlowLayout.CENTER;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.logging.Level;
import java.util.logging.Logger;
//import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javax.swing.BoxLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSlider;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;/**编程四:* 创建三个JSlider滚动条和一个JLabel标签对象,* 滚动条用来调整红、绿、蓝三色的比例,每个滚动条加标题边界、设置刻度(自定)和标注。* 当拖动滑块修改三色比例时,变化标签的背景色。*/
public class NewFourQuestion extends JFrame{JLabel jl0 = new JLabel(" ");JLabel jl1 = new JLabel("红:");JLabel jl2 = new JLabel("绿:");JLabel jl3 = new JLabel("蓝:");JSlider js1 = new JSlider(0, 255);//设置最小值和最大值JSlider js2 = new JSlider(0, 255);JSlider js3 = new JSlider(0, 255);JPanel jp0 = new JPanel();JPanel jp1 = new JPanel();JPanel jp2 = new JPanel();JPanel jp3 = new JPanel();FlowLayout fl = new FlowLayout(CENTER);public NewFourQuestion() {super("RGB");setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);//关闭窗口,不结束程序BoxLayout box = new BoxLayout(this.getContentPane(), BoxLayout.Y_AXIS);setLayout(box);//容器布局为:方框垂直布局//属性:jp0.setLayout(fl);//面板布局jp1.setLayout(fl);jp2.setLayout(fl);jp3.setLayout(fl);js1.setMajorTickSpacing(50);//设置滚动条js1.setMinorTickSpacing(10);js1.setPaintTicks(true);js1.setPaintLabels(true);js2.setMajorTickSpacing(50);js2.setMinorTickSpacing(20);js2.setPaintTicks(true);js2.setPaintLabels(true);js3.setMajorTickSpacing(50);js3.setMinorTickSpacing(30);js3.setPaintTicks(true);js3.setPaintLabels(true);jl0.setOpaque(true);//不透明jl0.setBackground(new Color(150, 150, 150));js1.addChangeListener(new ChangeListener() {public void stateChanged(ChangeEvent e) {int r = js1.getValue();int g = js2.getValue();int b = js3.getValue();jl0.setBackground(new Color(r, g, b));}});js2.addChangeListener(new ChangeListener() {public void stateChanged(ChangeEvent e) {int r = js1.getValue();int g = js2.getValue();int b = js3.getValue();jl0.setBackground(new Color(r, g, b));}});js3.addChangeListener(new ChangeListener() {public void stateChanged(ChangeEvent e) {int r = js1.getValue();int g = js2.getValue();int b = js3.getValue();jl0.setBackground(new Color(r, g, b));}});//布局jp0.add(jl0);jp1.add(jl1);jp1.add(js1);jp2.add(jl2);jp2.add(js2);jp3.add(jl3);jp3.add(js3);add(jp0);add(jp1);add(jp2);add(jp3);pack();setLocation(720, 260);setVisible(true);}
}
5、NewFiveQuestion.java
package exceptioneight;import java.awt.Color;
import java.awt.FlowLayout;
import static java.awt.FlowLayout.CENTER;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.BoxLayout;
import javax.swing.ButtonGroup;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JTextField;/**编程五:*创建一个文本框、三个单选按钮、一个标签和一个按钮,* 文本框用来输入自然数N,根据选择单选按钮的不同,* 分别计算:1+2+…N或1*2*…N或1+1/2+1/3+…1/N,* 计算结果在标签中显示。*/
public class NewFiveQuestion extends JFrame {private JTextField jTextField1 = new JTextField(16);private JLabel jLabel1 = new JLabel("请输入自然数N:");private JLabel jLabel2 = new JLabel("计算结果为: ");private JPanel jpane0 = new JPanel();private JPanel jpane1 = new JPanel();private JPanel jpane2 = new JPanel();private JPanel jpane3 = new JPanel();private ButtonGroup buttonGroup = new ButtonGroup();//单选按钮组private JRadioButton jRadioButton1 = new JRadioButton("1+2+…N");private JRadioButton jRadioButton2 = new JRadioButton("1*2*…N");private JRadioButton jRadioButton3 = new JRadioButton("1+1/2+1/3+…1/N");private FlowLayout fl = new FlowLayout(CENTER);private BoxLayout box = new BoxLayout(this.getContentPane(), BoxLayout.Y_AXIS);private String nStr;private int nInt;public NewFiveQuestion() {super();setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);//关闭窗口,不结束程序setLayout(box);//容器布局为:方框垂直布局//属性jpane1.setLayout(fl);jpane2.setLayout(fl);jpane3.setLayout(fl);buttonGroup.add(jRadioButton1);buttonGroup.add(jRadioButton2);buttonGroup.add(jRadioButton3);//事件jRadioButton1.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent evt) {nStr = jTextField1.getText();if(!nStr.equals("") ) {nInt = Integer.parseInt(nStr);} else {nInt = -1;}jLabel2.setText("计算结果为:" + String.valueOf(One(nInt)));}});jRadioButton2.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent evt) {nStr = jTextField1.getText();if(!nStr.equals("") ) {nInt = Integer.parseInt(nStr);} else {nInt = -1;}jLabel2.setText("计算结果为:" + String.valueOf(Two(nInt)));}});jRadioButton3.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent evt) {nStr = jTextField1.getText();if(!nStr.equals("") ) {nInt = Integer.parseInt(nStr);} else {nInt = -1;}jLabel2.setText("计算结果为:" + String.valueOf(Three(nInt)));}});//布局jpane0.add(jLabel1);jpane1.add(jTextField1);jpane2.add(jRadioButton1);jpane2.add(jRadioButton2);jpane2.add(jRadioButton3);jpane3.add(jLabel2);add(jpane0);add(jpane1);add(jpane2);add(jpane3);pack();setLocation(720, 260);setVisible(true);}/*** 1+2+…N*/public int One(int n) {if(n < 1) return 0;int sum = 0;for(int i = 1; i <= n; i++){sum += i;}return sum;}/*** 1*2*…N*/public int Two(int n) {if(n < 1) return 0;int sum = 1;for(int i = 1; i <= n; i++){sum *= i;}return sum;}/*** 1+1/2+1/3+…1/N*/public double Three(int n) {if(n < 1) return 0;double sum = 0;for(int i = 1; i <= n; i++){sum += 1.0/i;}return sum;}
}
6、ExceptionEight.java
package exceptioneight;import java.awt.FlowLayout;
import static java.awt.FlowLayout.CENTER;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextArea;/***实验八 主程序*/
public class ExceptionEight extends JFrame{private JTextArea textArea = new JTextArea(13, 50);//指定初始文字和宽度private JButton jButton1 = new JButton("编程一");private JButton jButton2 = new JButton("编程二");private JButton jButton3 = new JButton("编程三");private JButton jButton4 = new JButton("编程四");private JButton jButton5 = new JButton("编程五");private JPanel jPanel1 =new JPanel();private JPanel jPanel2 =new JPanel();private FlowLayout fl = new FlowLayout(CENTER);private BoxLayout box = new BoxLayout(this.getContentPane(), BoxLayout.Y_AXIS);public ExceptionEight() {super();setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭窗口,就结束程序setLayout(box);//容器布局为:方框垂直布局//控件属性jPanel1.setLayout(fl);jPanel2.setLayout(fl);textArea.setEditable(false);//文本框不可编辑textArea.setLineWrap(true);//自动换行textArea.setText(" 实验八\n (1)编程:创建有一个文本框和三个按钮的小程序。当按下每个按钮时,使不同的文字显示在文本框中。\n" +
" (2)编程:创建一用户登录界面,接受用户输入的帐号和密码,给三次输入机会。\n" +
" (3)编程:编写成人标准身高和体重互查的程序。身高和体生在两个不同的文本框中输入,要求输入一个。输入身高则输出体重,输入体重则输出身高。用一个按钮启动互查。互查的公式为: 体重=身高-100。\n" +
" (4)编程:创建三个JSlider滚动条和一个JLabel标签对象,滚动条用来调整红、绿、蓝三色的比例,每个滚动条加标题边界、设置刻度(自定)和标注。当拖动滑块修改三色比例时,变化标签的背景色。\n" +
" (5)编程:创建一个文本框、三个单选按钮、一个标签和一个按钮,文本框用来输入自然数N,根据选择单选按钮的不同,分别计算:1+2+…N或1*2*…N或1+1/2+1/3+…1/N,计算结果在标签中显示。");//事件jButton1.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent evt) {/**编程一:* 创建有一个文本框和三个按钮的小程序。* 当按下每个按钮时,使不同的文字显示在文本框中。*/new OneQuestion();}});jButton2.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent evt) {/**编程二:* 创建一用户登录界面,接受用户输入的帐号和密码,给三次输入机会。*/new TwoQuestion(); }});jButton3.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent evt) {/**编程三:* 编写成人标准身高和体重互查的程序。* 身高和体生在两个不同的文本框中输入,要求输入一个。* 输入身高则输出体重,输入体重则输出身高。* 用一个按钮启动互查。互查的公式为: 体重=身高-100。*/new ThreeQuestion();}}); jButton4.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent evt) {/**编程四* 创建三个JSlider滚动条和一个JLabel标签对象,* 滚动条用来调整红、绿、蓝三色的比例,每个滚动条加标题边界、设置刻度(自定)和标注。* 当拖动滑块修改三色比例时,变化标签的背景色。*/new NewFourQuestion();}}); jButton5.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent evt) {/**编程五* 创建一个文本框、三个单选按钮、一个标签和一个按钮,* 文本框用来输入自然数N,根据选择单选按钮的不同,* 分别计算:1+2+…N或1*2*…N或1+1/2+1/3+…1/N,* 计算结果在标签中显示。*/new NewFiveQuestion();}});//布局jPanel1.add(textArea);jPanel2.add(jButton1);jPanel2.add(jButton2);jPanel2.add(jButton3);jPanel2.add(jButton4);jPanel2.add(jButton5);add(jPanel1);add(jPanel2);pack();setLocation(420, 220);setVisible(true);}public static void main(String[] args) {new ExceptionEight();}
}
三、运行结果







送你一份Java基础课程PPT,老师讲的超好,网盘链接:https://pan.baidu.com/s/1FnWr404NxwyzqBPAog74Ng
(若链接失效可发邮件到ydduong@163.com)
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
