java编程编写GUI界面,模拟抢红包游戏,在界面输入红包大小和抢红包人姓名(用逗号隔开),输出系统当前时间以及每个人抢的红包大小,要求每个人抢的红包最少不能少于0.01元,精确到小数点后两位。
时间: 2024-04-01 18:35:23 浏览: 53
java 写的GUI界面
好的,这个问题涉及到GUI编程和数据处理,我会尽力回答。首先,你需要使用Java的Swing或JavaFX库来创建GUI界面。在界面上,你需要放置一些标签、文本框和按钮等控件,用以输入红包大小和抢红包人姓名,以及触发程序的运行。
在程序运行时,你需要将输入的红包大小和抢红包人姓名进行处理,将红包平均分配给每个人,每个人抢到的红包大小必须大于等于0.01元。你可以使用Java的日期时间类来获取系统当前时间,然后将每个人抢到的红包大小和系统当前时间输出到界面上。
下面是一个简单的实现示例,仅供参考:
```java
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.swing.*;
public class RedPacketGame extends JFrame implements ActionListener {
private JLabel label1, label2, label3;
private JTextField textField1, textField2;
private JButton button;
private JTextArea textArea;
public RedPacketGame() {
super("模拟抢红包游戏");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(400, 300);
setLocationRelativeTo(null);
JPanel panel1 = new JPanel();
label1 = new JLabel("红包大小:");
textField1 = new JTextField(10);
panel1.add(label1);
panel1.add(textField1);
JPanel panel2 = new JPanel();
label2 = new JLabel("抢红包人姓名:");
textField2 = new JTextField(10);
panel2.add(label2);
panel2.add(textField2);
JPanel panel3 = new JPanel();
button = new JButton("开始游戏");
button.addActionListener(this);
panel3.add(button);
JPanel panel4 = new JPanel(new BorderLayout());
label3 = new JLabel("抢红包记录:");
textArea = new JTextArea();
textArea.setEditable(false);
JScrollPane scrollPane = new JScrollPane(textArea);
panel4.add(label3, BorderLayout.NORTH);
panel4.add(scrollPane, BorderLayout.CENTER);
Container container = getContentPane();
container.setLayout(new BorderLayout());
container.add(panel1, BorderLayout.NORTH);
container.add(panel2, BorderLayout.CENTER);
container.add(panel3, BorderLayout.SOUTH);
container.add(panel4, BorderLayout.EAST);
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == button) {
String input1 = textField1.getText().trim();
String input2 = textField2.getText().trim();
if (input1.isEmpty() || input2.isEmpty()) {
JOptionPane.showMessageDialog(this, "请输入红包大小和抢红包人姓名");
return;
}
double totalAmount = Double.parseDouble(input1);
String[] names = input2.split(",");
int num = names.length;
double[] amounts = new double[num];
double total = 0;
for (int i = 0; i < num; i++) {
amounts[i] = Math.round(totalAmount / num * 100) / 100.0;
total += amounts[i];
}
for (int i = 0; i < num; i++) {
if (totalAmount - total < 0.01) {
break;
}
amounts[i] += 0.01;
total += 0.01;
}
textArea.append(getCurrentTime() + "\n");
for (int i = 0; i < num; i++) {
textArea.append(names[i] + " 抢到 " + String.format("%.2f", amounts[i]) + " 元\n");
}
textArea.append("\n");
textField1.setText("");
textField2.setText("");
}
}
private String getCurrentTime() {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return sdf.format(new Date()) + "\n";
}
public static void main(String[] args) {
RedPacketGame game = new RedPacketGame();
game.setVisible(true);
}
}
```
在这个示例中,我们使用了Java的Swing库来创建GUI界面,包括标签、文本框、按钮和文本区域等控件。在按钮的事件处理方法中,我们获取输入的红包大小和抢红包人姓名,然后将红包平均分配给每个人,每个人抢到的红包大小必须大于等于0.01元。最后,我们将每个人抢到的红包大小和系统当前时间输出到文本区域中。注意,我们使用了Java的日期时间类来获取系统当前时间,并使用了String.format方法来格式化输出的红包大小,保留小数点后两位。
阅读全文