btndj.addActionListener(e-> //入住界面登记按钮 { framegk.setVisible(true); //功能选择界面可视 framerz.setVisible(false); //入住界面不可视 String Gname=inputGname.getText(); // 顾客姓名 String Gage=inputGage.getText(); //顾客年龄 String Gphonenumber=inputGphonenumber.getText(); //顾客手机号 String Gsex=inputGsex.getText(); //顾客性别 String Gadr=inputGadr.getText(); //顾客地址 String Gsize=inputGsize.getText(); //顾客房间大小 if (Gname.isEmpty() || Gage.isEmpty() || Gphonenumber.isEmpty() || Gsex.isEmpty() || Gadr.isEmpty()||Gsize.isEmpty()) { return; // 如果有任何一个字段为空,不做处理 } else { int age = Integer.parseInt(Gage); int phonenumber=Integer.parseInt(Gphonenumber); Guke guke = new Guke(Gname, age, phonenumber, Gsex, Gadr, Gsize); customerList.add(guke); customerNames.add(Gname); FileWriter filee = null; try { filee = new FileWriter("D:/info.txt",true); } catch (IOException e2) { // TODO Auto-generated catch block e2.printStackTrace(); } for (Guke Guke : customerList) { try { filee.write(guke.toString()+"\r\n"); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } //通过Guke的toString 将所有信息存入文件 } try { filee.close(); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } // 将新的用户信息保存到文件 inputGname.setText(""); inputGage.setText(""); inputGphonenumber.setText(""); inputGsex.setText(""); inputGadr.setText(""); inputGsize.setText(""); } }); 为什么我写的这个会向文件里重复写入
时间: 2024-02-05 18:05:01 浏览: 68
你在每次点击登记按钮时都会将`customerList`中的所有顾客信息写入文件,而`customerList`是一个全局变量,每次执行这个函数时都会把之前的顾客信息再次写入文件中,导致了重复写入的问题。解决这个问题的方法是,在写入文件之前,先清空文件中的内容,或者只将新加入的顾客信息写入文件中。可以使用`FileWriter`类的构造函数来实现覆盖之前的内容,例如:
```java
FileWriter filee = new FileWriter("D:/info.txt", false); // false 表示覆盖之前的内容
```
或者使用`FileWriter`类的`append`参数来实现追加到文件末尾,例如:
```java
FileWriter filee = new FileWriter("D:/info.txt", true); // true 表示追加到文件末尾
```
相关问题
使用Java语言编写一个可视化界面,1.界面开头是一个标题 2.标题下方是三个按钮 3.标题和按钮不在同一行 4.点击按钮可以跳转页面
好的,这是一个Java Swing的可视化界面,你可以参考以下代码实现:
```java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class MyGUI extends JFrame implements ActionListener {
private JButton btn1, btn2, btn3;
public MyGUI() {
super("My GUI");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new BorderLayout());
JLabel label = new JLabel("My GUI Title");
label.setHorizontalAlignment(JLabel.CENTER);
add(label, BorderLayout.NORTH);
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(1, 3));
btn1 = new JButton("Button 1");
btn1.addActionListener(this);
panel.add(btn1);
btn2 = new JButton("Button 2");
btn2.addActionListener(this);
panel.add(btn2);
btn3 = new JButton("Button 3");
btn3.addActionListener(this);
panel.add(btn3);
add(panel, BorderLayout.CENTER);
setSize(400, 200);
setLocationRelativeTo(null);
setVisible(true);
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == btn1) {
// 跳转到页面1
} else if (e.getSource() == btn2) {
// 跳转到页面2
} else if (e.getSource() == btn3) {
// 跳转到页面3
}
}
public static void main(String[] args) {
new MyGUI();
}
}
```
这个界面中,使用了`JFrame`作为窗口容器,`JLabel`作为标题,`JButton`作为按钮,使用了`BorderLayout`和`GridLayout`布局管理器来安排组件的位置。当点击按钮时,会触发`actionPerformed`方法,你可以在这个方法中添加跳转到其他页面的代码。
使用Java语言编写一个可视化界面,1.界面开头是一个文本标签 2.文本标签下方是三个按钮 3.文本标签和按钮不在同一行 4.点击按钮可以跳转页面
好的,我可以为您解答这个问题。
首先,我们需要使用Java Swing库来创建可视化界面。以下是一个简单的代码示例,实现了一个包含文本标签和三个按钮的窗口,并且点击按钮可以跳转到另一个页面:
```java
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class MyGUI extends JFrame {
public MyGUI() {
// 设置窗口标题
setTitle("My GUI");
// 创建文本标签
JLabel label = new JLabel("这是一个文本标签");
// 创建三个按钮
JButton button1 = new JButton("按钮1");
JButton button2 = new JButton("按钮2");
JButton button3 = new JButton("按钮3");
// 创建面板,并将标签和按钮添加到面板中
JPanel panel = new JPanel();
panel.add(label);
panel.add(button1);
panel.add(button2);
panel.add(button3);
// 设置面板布局方式
panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
// 添加面板到窗口中
add(panel);
// 设置窗口大小和布局方式
setSize(400, 300);
setLayout(new BorderLayout());
// 添加按钮的点击事件
button1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 跳转到另一个页面
JFrame frame = new JFrame("跳转页面");
frame.setSize(300, 200);
frame.setVisible(true);
}
});
button2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 跳转到另一个页面
JFrame frame = new JFrame("跳转页面");
frame.setSize(300, 200);
frame.setVisible(true);
}
});
button3.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 跳转到另一个页面
JFrame frame = new JFrame("跳转页面");
frame.setSize(300, 200);
frame.setVisible(true);
}
});
}
public static void main(String[] args) {
new MyGUI().setVisible(true);
}
}
```
在这个示例中,我们创建了一个继承自JFrame的MyGUI类。在MyGUI构造函数中,我们首先设置了窗口标题,然后创建了一个文本标签和三个按钮,并将它们添加到一个面板中。接着,我们设置了面板的布局方式为纵向排列,并将面板添加到窗口中。最后,我们为每个按钮添加了一个点击事件,当点击按钮时,会创建一个新的窗口并显示出来。
您可以按照您的需求修改代码,例如更改按钮的文本、添加按钮的功能等等。希望这个示例能够对您有所帮助!
阅读全文