题目:
编写一个窗体应用程序,实现以下功能:
a.窗口布局为BorderLayout;在窗口的北侧区域包含一个文本框和一个按钮,南侧含一个下拉框列表,窗口中间区域有一个文本区;
b.用户在文本框中输入一个数值并回车,或者点击按钮时,将文本框内的数值显示在文本区内;当用户输入“clear”的时候,清空文本区的全部内容;
c.下拉框列表里的内容自己定义,当选择下拉框时,同时将列表框的内容显示在文本区中
注意点:
1.该布局中北侧包含两个组件,但是BorderLayout布局中组件只能有一个,因此可以将这两个组件放在一个JPanel的对象中,将该对象放置在该布局的北侧;
2.本题目中事件源一共有三个并且其 产生的事件并不一致,因此可以考虑用自己创建的窗口类在继承JFrame的同时实现ActionListener接口,这样省去了参数的传递;当然,也可以自定义一个接口继承ActionListener接口,之后创建监听类实现自定义的接口,在自定义的接口中主要是定义一些传参方法,将窗体中的组件传递到监听类中,这样在触发事件的时候,我们便可以通过getSource()方法获取事件源去进行对比,实现不同的事件;
3.要熟悉组件中的一些方法,如:如何获取下拉框列表的值等等。
代码:
//主类:
/**
* @ClassName 主类
* @Description TODO
* @Author 今夕河西
* @Date 2022-09-05 17:01
* @Version 1.0
**/
public class Main {
public static void main(String[] args) {
Window win = new Window();
win.setBounds(100,100,300,300);
win.setTitle("实验一");
}
}
//窗体类:
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
/**
* @ClassName 窗口设置
* @Description TODO
* @Author 今夕河西
* @Date 2022-09-05 17:01
* @Version 1.0
**/
/*
*题目:编写一个窗体应用程序,实现以下功能:
* a) 窗口布局为BorderLayout;在窗口的北侧区域包含有一个文本框和一个按钮,南侧含一个下拉列表框,窗口中间区域有一个文本区。
* b) 用户在文本框中输入一个数值并回车,或者点击按钮时,将文本框内的数值显示在文本区中;当用户输入“clear”的时候,清空文本区的全部内容。
* c) 下拉列表框里内容自己定义,当进行下拉选择时,同样将列表框中的内容显示在文本区中
**/
public class Window extends JFrame implements ActionListener {
//设置组件
JTextField text; //文本框
JButton button; //按钮
JComboBox<String> box; //下拉列表框
JTextArea area; //文本区
Window () {
init();
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
void init () {
text = new JTextField(5);
text.addActionListener(this);
button = new JButton("按钮");
button.addActionListener(this);
JPanel jPanel = new JPanel();
jPanel.add(text);
jPanel.add(button);
add(jPanel,BorderLayout.NORTH);
box = new JComboBox();
box.addItem("i love java");
box.addItem("i love C++");
box.addActionListener(this);
add(box,BorderLayout.SOUTH);
area = new JTextArea(8,10);
add(area);
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == text || e.getSource() == button) { //由文本框触发的事件
String str = text.getText();
if (str.equals("clear")) {
area.setText("");
} else {
try {
double number = Double.parseDouble(str);
area.append(str + "\n");
} catch(Exception ee) {
System.out.println("输入内容不是数值格式!");
}
}
}
if (e.getSource() == box) {
String str = (String) box.getSelectedItem();
area.append(str + "\n");
}
}
}
运行结果: