java里添加按钮来获取当前时间,获取输入的天数,显示经过该天数后的时间在另一个面板,预测当天指定姓名的运势
时间: 2023-07-07 22:38:40 浏览: 96
好的,这是一个比较复杂的问题,需要使用到Java GUI编程和日期时间处理相关的知识。我会尽力回答你的问题,但是由于篇幅限制,可能无法详细说明每个细节。如果你有任何不明白的地方,可以回复我进一步询问。
首先,我们需要创建一个GUI界面,包含以下几个组件:
1. 一个按钮,用于获取当前时间。
2. 一个文本框,用于输入天数。
3. 另一个按钮,用于计算经过指定天数后的时间。
4. 一个标签,用于显示计算结果。
5. 一个文本框,用于输入姓名。
6. 另一个按钮,用于预测当天指定姓名的运势。
7. 一个标签,用于显示预测结果。
下面是一个示例代码,可以作为参考:
```java
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Random;
public class MyPanel extends JPanel {
private JButton getCurrentTimeBtn;
private JTextField daysInput;
private JButton calculateTimeBtn;
private JLabel timeResultLabel;
private JTextField nameInput;
private JButton predictBtn;
private JLabel predictResultLabel;
public MyPanel() {
// 初始化组件
getCurrentTimeBtn = new JButton("获取当前时间");
daysInput = new JTextField(10);
calculateTimeBtn = new JButton("计算时间");
timeResultLabel = new JLabel();
nameInput = new JTextField(10);
predictBtn = new JButton("预测运势");
predictResultLabel = new JLabel();
// 设置布局
setLayout(new GridLayout(3, 1));
// 第一行:获取当前时间
JPanel row1 = new JPanel();
row1.add(getCurrentTimeBtn);
row1.add(new JLabel("当前时间:"));
row1.add(timeResultLabel);
add(row1);
// 第二行:计算经过指定天数后的时间
JPanel row2 = new JPanel();
row2.add(new JLabel("经过"));
row2.add(daysInput);
row2.add(new JLabel("天后的时间:"));
row2.add(calculateTimeBtn);
row2.add(timeResultLabel);
add(row2);
// 第三行:预测指定姓名的运势
JPanel row3 = new JPanel();
row3.add(new JLabel("请输入姓名:"));
row3.add(nameInput);
row3.add(predictBtn);
row3.add(predictResultLabel);
add(row3);
// 添加事件监听器
getCurrentTimeBtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
updateTimeResultLabel(new Date());
}
});
calculateTimeBtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
int days = Integer.parseInt(daysInput.getText());
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DAY_OF_MONTH, days);
updateTimeResultLabel(calendar.getTime());
}
});
predictBtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String name = nameInput.getText();
String[] fortunes = {"大吉", "中吉", "小吉", "吉", "末吉", "凶", "大凶"};
String fortune = fortunes[new Random().nextInt(fortunes.length)];
updatePredictResultLabel(name + "的运势是:" + fortune);
}
});
}
private void updateTimeResultLabel(Date date) {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
timeResultLabel.setText(format.format(date));
}
private void updatePredictResultLabel(String text) {
predictResultLabel.setText(text);
}
}
```
这段代码创建了一个继承自JPanel的自定义面板MyPanel,其中包含了上述的七个组件。通过addActionListener方法为按钮添加事件监听器,实现获取当前时间、计算时间、预测运势的功能。其中,updateTimeResultLabel和updatePredictResultLabel方法用于更新标签的文本内容。
你可以在自己的Java项目中创建一个MyPanel的实例,并将其添加到JFrame窗口中,即可看到一个完整的GUI界面。你也可以根据自己的需求对GUI进行修改和美化。
阅读全文