Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Jframe获取输入并写入文件_Java_Swing_File Io_Io_Printwriter - Fatal编程技术网

Java Jframe获取输入并写入文件

Java Jframe获取输入并写入文件,java,swing,file-io,io,printwriter,Java,Swing,File Io,Io,Printwriter,我有一个项目,我想从jframe获得输入。当代码运行时,我必须在一次时间内输入3个人的数据,并将这些数据写入文件名person.txt。这些数据有名称昵称Age,当我编译代码时,它不起作用,我只在person.txt文件中写入一个数据。请帮帮我好吗?我无法在我的项目中得到这些。我该怎么办 public class JavaGui { public String data = ""; JFrame f; JLabel l1, l2, l3; JTextField tf1, tf2

我有一个项目,我想从jframe获得输入。当代码运行时,我必须在一次时间内输入3个人的数据,并将这些数据写入文件名person.txt。这些数据有名称昵称Age,当我编译代码时,它不起作用,我只在person.txt文件中写入一个数据。请帮帮我好吗?我无法在我的项目中得到这些。我该怎么办

 public class JavaGui {
  public String data = "";
  JFrame f;
  JLabel l1, l2, l3;
  JTextField tf1, tf2, tf3;
  JButton b;
  JavaGui() {

   FileWriter fw = null;
   try {
    fw = new FileWriter("person.txt");
   } catch (IOException ex) {
    Logger.getLogger(JavaGui.class.getName()).log(Level.SEVERE, null, ex);
   }

   PrintWriter pw = new PrintWriter(fw);


   f = new JFrame("Java GUI");
   l1 = new JLabel("Name");
   l1.setBounds(20, 50, 80, 30);
   tf1 = new JTextField();
   tf1.setBounds(100, 50, 200, 30);

   l2 = new JLabel("Nickname");
   l2.setBounds(20, 100, 80, 30);
   tf2 = new JTextField();
   tf2.setBounds(100, 100, 200, 30);

   l3 = new JLabel("Age");
   l3.setBounds(20, 150, 80, 30);
   tf3 = new JTextField();
   tf3.setBounds(100, 150, 200, 30);

   b = new JButton("Save");
   b.setBounds(100, 200, 70, 30);

   f.add(l1);
   f.add(tf1);
   f.add(l2);
   f.add(tf2);
   f.add(l3);
   f.add(tf3);
   f.add(b);
   f.setSize(350, 350);
   f.setLayout(null);
   f.setLocationRelativeTo(null);
   f.setResizable(false);
   f.setVisible(true);
   f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

   for (int i = 0; i < 3; i++) {
    b.addActionListener(new ActionListener() {
     public void actionPerformed(ActionEvent e) {

      String name = "";
      String nickname = "";
      String ageS = "";
      int age = 0;
      try {
       name = "Name : " + tf1.getText();
       nickname = "Nickname : " + tf2.getText();
       age = Integer.parseInt(tf3.getText());

       if (age > 0 && age < 100) {
        ageS = "Age : " + age;
       } else {
        JOptionPane.showMessageDialog(null, "Please Enter Age field by Positive number Or Less than 100");
       }
      } catch (NumberFormatException ex) {
       JOptionPane.showMessageDialog(null, "Please enter Age field by number type");

      }

      data += name + " " + nickname + " " + ageS;

      pw.println(data);
      pw.close();

     }

    });
   }

  }

  public static void main(String[] args) {
   new JavaGui();
  }

 }
公共类JavaGui{ 公共字符串数据=”; jf框架; JLabel l1、l2、l3; JTextField tf1、tf2、tf3; 按钮b; JavaGui(){ FileWriter fw=null; 试一试{ fw=新文件编写器(“person.txt”); }捕获(IOEX异常){ Logger.getLogger(JavaGui.class.getName()).log(Level.SEVERE,null,ex); } PrintWriter pw=新的PrintWriter(fw); f=新JFrame(“Java GUI”); l1=新的JLabel(“名称”); l1.立根(20,50,80,30); tf1=新的JTextField(); tf1.立根(100,50,200,30); l2=新的JLabel(“昵称”); l2.立根(20,100,80,30); tf2=新的JTextField(); tf2.立根(100100200,30); l3=新的JLabel(“年龄”); l3.立根(20、150、80、30); tf3=新的JTextField(); tf3.立根(10015020030); b=新的按钮(“保存”); b、 立根(100,200,70,30); f、 添加(l1); f、 添加(tf1); f、 添加(l2); f、 添加(tf2); f、 添加(l3); f、 添加(tf3); f、 添加(b); f、 设置大小(350350); f、 setLayout(空); f、 setLocationRelativeTo(空); f、 可设置大小(假); f、 setVisible(真); f、 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 对于(int i=0;i<3;i++){ b、 addActionListener(新ActionListener(){ 已执行的公共无效操作(操作事件e){ 字符串名称=”; 字符串昵称=”; 字符串“”; int年龄=0; 试一试{ name=“name:+tf1.getText(); 昵称=“昵称:”+tf2.getText(); age=Integer.parseInt(tf3.getText()); 如果(年龄>0岁和年龄<100岁){ ageS=“Age:”+年龄; }否则{ showMessageDialog(null,“请按正数或小于100的数字输入年龄字段”); } }捕获(NumberFormatException ex){ showMessageDialog(null,“请按数字类型输入年龄字段”); } 数据+=姓名+“”+昵称+“”+年龄; pw.println(数据); 关闭(); } }); } } 公共静态void main(字符串[]args){ 新JavaGui(); } }
我想在中添加多个人的数据

您想使用
文件编写器
(不是打印编写器)写入文件


然后,当您创建
FileWriter
时,您可以将数据“附加”到文件中。阅读
FileWriter
API以获得合适的构造函数使用。

测试良好,工作正常。我添加了“下一步”按钮,因此每次在StringBuilder中添加新数据时,您都可以保存这些人。您可以移除计数器(我添加了计数器以仅添加3人),并使其不受限制

import javax.swing.*;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
import java.util.logging.Level;
import java.util.logging.Logger;

public class JavaGui {
JFrame f;
JLabel l1, l2, l3;
JTextField tf1, tf2, tf3;
JButton b,next;
int counter;

StringBuilder data = new StringBuilder();
JavaGui() {}

public static void main(String[] args) {

    FileWriter fw = null;
    try{
        fw = new FileWriter("person.txt");
        PrintWriter pw = new PrintWriter(fw);
        new JavaGui().go(pw);

       }catch (IOException ex) {
        Logger.getLogger(JavaGui.class.getName()).log(Level.SEVERE, null, ex);
    }


}

public void go(PrintWriter pw) {

    f = new JFrame("Java GUI");
    l1 = new JLabel("Name");
    l1.setBounds(20, 50, 80, 30);
    tf1 = new JTextField();
    tf1.setBounds(100, 50, 200, 30);

    l2 = new JLabel("Nickname");
    l2.setBounds(20, 100, 80, 30);
    tf2 = new JTextField();
    tf2.setBounds(100, 100, 200, 30);

    l3 = new JLabel("Age");
    l3.setBounds(20, 150, 80, 30);
    tf3 = new JTextField();
    tf3.setBounds(100, 150, 200, 30);

    next = new JButton("Next");
    next.setBounds(100, 200, 70, 30);

    b = new JButton("Save");
    b.setBounds(180, 200, 70, 30);

    f.add(l1);f.add(tf1);
    f.add(l2);f.add(tf2);
    f.add(l3);f.add(tf3);
    f.add(next);
    f.add(b);
    f.setSize(350, 350);
    f.setLayout(null);
    f.setLocationRelativeTo(null);
    f.setResizable(false);
    f.setVisible(true);
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    next.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            String name = "";
            String nickname = "";
            String ageS = "";
            int age = 0;

              try{    
                name = "Name : " + tf1.getText();
                nickname = "Nickname : " + tf2.getText();
                age =Integer.parseInt(tf3.getText());

                if(age > 0 && age < 100) {
                    ageS = "Age : " + age;
                }else{
                    JOptionPane.showMessageDialog(null, "Please Enter Age field by Positive number Or Less than 100");
                }
               }catch(NumberFormatException ex){
                JOptionPane.showMessageDialog(null, "Please enter Age field by number type");
               }

               data.append(name + " " + nickname + " " + ageS);
               data.append(System.getProperty("line.separator"));

               counter++;

               tf1.setText("");
               tf2.setText("");
               tf3.setText("");

               if(counter > 2)
                   next.setEnabled(false);
        }

    });

    b.addActionListener(new ActionListener(){
        public void actionPerformed(ActionEvent e){

            pw.print(data.toString());
            pw.close();

        } 

    });
 }

}
import javax.swing.*;
导入java.awt.event.ActionEvent;
导入java.awt.event.ActionListener;
导入java.io.*;
导入java.util.logging.Level;
导入java.util.logging.Logger;
公共类JavaGui{
jf框架;
JLabel l1、l2、l3;
JTextField tf1、tf2、tf3;
按钮b,下一个;
整数计数器;
StringBuilder数据=新的StringBuilder();
JavaGui(){}
公共静态void main(字符串[]args){
FileWriter fw=null;
试一试{
fw=新文件编写器(“person.txt”);
PrintWriter pw=新的PrintWriter(fw);
新的JavaGui().go(pw);
}捕获(IOEX异常){
Logger.getLogger(JavaGui.class.getName()).log(Level.SEVERE,null,ex);
}
}
公共作废go(打印作者pw){
f=新JFrame(“Java GUI”);
l1=新的JLabel(“名称”);
l1.立根(20,50,80,30);
tf1=新的JTextField();
tf1.立根(100,50,200,30);
l2=新的JLabel(“昵称”);
l2.立根(20,100,80,30);
tf2=新的JTextField();
tf2.立根(100100200,30);
l3=新的JLabel(“年龄”);
l3.立根(20、150、80、30);
tf3=新的JTextField();
tf3.立根(10015020030);
下一步=新的按钮(“下一步”);
下一个。挫折(100200,70,30);
b=新的按钮(“保存”);
b、 立根(180,200,70,30);
f、 添加(l1);f.添加(tf1);
f、 添加(l2);f.add(tf2);
f、 添加(l3);f.添加(tf3);
f、 添加(下一个);
f、 添加(b);
f、 设置大小(350350);
f、 setLayout(空);
f、 setLocationRelativeTo(空);
f、 可设置大小(假);
f、 setVisible(真);
f、 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
next.addActionListener(新ActionListener(){
@凌驾
已执行的公共无效操作(操作事件e){
字符串名称=”;
字符串昵称=”;
字符串“”;
int年龄=0;
试试{
name=“name:+tf1.getText();
昵称=“昵称:”+tf2.getText();
age=Integer.parseInt(tf3.getText());
如果(年龄>0岁和年龄<100岁){
ageS=“Age:”+年龄;
}否则{
showMessageDialog(null,“请按正数或小于100的数字输入年龄字段”);
}
}捕获(NumberFormatException ex){
showMessageDialog(null,“请按数字类型输入年龄字段”);
}
data.append(姓名+昵称+年龄);
data.append(System.getProperty(“line.separator”);
计数器++;
tf1.setText(“”);
tf2.setText(“”);
tf3.setText(“”);
如果(计数器>2)
next.setEnabled(false);
}
});
b、 addActionListener(新ActionListener(){
已执行的公共无效操作(操作事件e){
打印(data.toString());
关闭();
} 
});
}
}

我得到的信息如下
姓名:我的姓名昵称:我的昵称年龄:14