Java 要在GUI中加载的缓冲读取器
我制作了GUI来获取输入并保存它。我在加载输入时遇到了问题,我试图使用缓冲读取器进行加载,但我被卡在了这里 不要介意代码的注释区域:) 我需要load方法的帮助,因为我需要从数组中输入它来添加输入,并使用prev<和next>移动它Java 要在GUI中加载的缓冲读取器,java,user-interface,jframe,actionlistener,bufferedreader,Java,User Interface,Jframe,Actionlistener,Bufferedreader,我制作了GUI来获取输入并保存它。我在加载输入时遇到了问题,我试图使用缓冲读取器进行加载,但我被卡在了这里 不要介意代码的注释区域:) 我需要load方法的帮助,因为我需要从数组中输入它来添加输入,并使用prev移动它 import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.io.*; import java.util.*; //begining of a class that wil
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
//begining of a class that will implement Action listener
public class Orders extends JFrame implements ActionListener {
//instance variables, text field and buttons
private int index;
JFrame jf;
JTextField jtfItemName;
JTextField jtfNumberOf;
JTextField jtfCost;
JTextField jtfAmountOwned;
JButton jbCalculate;
JButton jbSave;
JButton jbClear;
JButton jbExit;
double calculate;
JButton jbLoad;
JButton jbPrev;
JButton jbNext;
String itemName;
String numberOf;
String cost;
String amountOwned;
ArrayList < String > lines;
String split = ", ";
//gui implementation
public Orders() {
index = 0;
lines = new ArrayList < > ();
jf = new JFrame(" Orders Calculator");
//pannels
JPanel pnl = new JPanel();
pnl.setLayout(new GridLayout(0, 2));
JLabel jlFirst = new JLabel("Item name :");
jlFirst.setHorizontalAlignment(JLabel.RIGHT);
jtfItemName = new JTextField(10);
pnl.add(jlFirst);
pnl.add(jtfItemName);
JLabel jlSecond = new JLabel("Number of :");
jlSecond.setHorizontalAlignment(JLabel.RIGHT);
jtfNumberOf = new JTextField(10);
pnl.add(jlSecond);
pnl.add(jtfNumberOf);
JLabel jlThird = new JLabel("Cost");
jlThird.setHorizontalAlignment(JLabel.RIGHT);
jtfCost = new JTextField(10);
pnl.add(jlThird);
pnl.add(jtfCost);
JLabel jlFourth = new JLabel("Amount owned :");
jlFourth.setHorizontalAlignment(JLabel.RIGHT);
jtfAmountOwned = new JTextField(10);
jtfAmountOwned.setEditable(false);
pnl.add(jlFourth);
pnl.add(jtfAmountOwned);
JPanel jpSouth = new JPanel(new BorderLayout());
JPanel jpSouthUp = new JPanel();
JPanel jpSouthDown = new JPanel();
jpSouth.add(jpSouthUp, BorderLayout.NORTH);
jpSouth.add(jpSouthDown, BorderLayout.SOUTH);
//buttons top
jbCalculate = new JButton("Calculate");
jbSave = new JButton("Save");
jbClear = new JButton("Clear");
jbExit = new JButton("Exit");
jpSouthUp.add(jbCalculate);
jpSouthUp.add(jbSave);
jpSouthUp.add(jbClear);
jpSouthUp.add(jbExit);
//buttons bottom
jbLoad = new JButton("Load");
jbPrev = new JButton("<Prev");
jbNext = new JButton("Next>");
jpSouthDown.add(jbLoad);
jpSouthDown.add(jbPrev);
jpSouthDown.add(jbNext);
jf.add(pnl);
jf.add(jpSouth, BorderLayout.SOUTH);
jf.pack();
jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//action listener
jbCalculate.addActionListener(this);
jbSave.addActionListener(this);
jbClear.addActionListener(this);
jbExit.addActionListener(this);
jbLoad.addActionListener(this);
jbPrev.addActionListener(this);
jbNext.addActionListener(this);
}
public double calc() {
double number = Double.parseDouble(jtfNumberOf.getText());
double cost = Double.parseDouble(jtfCost.getText());
// double sum = number * cost;
// calculate = "" + sum;
// jtfAmountOwned.setText(calculate);
calculate = number * cost;
jtfAmountOwned.setText(calculate + "");
return calculate;
}
//parametar constructor
public Orders(String itemName, String numberOf, String cost, String amountOwned) {
this.itemName = itemName;
this.numberOf = numberOf;
this.cost = cost;
this.amountOwned = amountOwned;
}
public void setItemName(String itemName) {
this.itemName = itemName;
}
public String getItemName() {
return itemName;
}
public void setNumberOf(String numberOf) {
this.numberOf = numberOf;
}
public String getNumberOf() {
return numberOf;
}
public void setCost(String cost) {
this.cost = cost;
}
public String getCost() {
return cost;
}
public void setAmountOwned(String amountOwned) {
this.amountOwned = amountOwned;
}
public String getAmountOwned() {
return amountOwned;
}
public void actionPerformed(ActionEvent events) {
if (events.getSource() == jbExit) {
System.exit(0);
} else if (events.getSource() == jbClear) {
jtfItemName.setText("");
jtfNumberOf.setText("");
jtfCost.setText("");
jtfAmountOwned.setText("");
} else if (events.getSource() == jbCalculate) {
calc();
} else if (events.getSource() == jbSave) {
try {
PrintWriter pV = new PrintWriter(new BufferedWriter(new FileWriter("121lab1.csv", true)));
pV.println("' " + jtfItemName.getText() + "', " + jtfNumberOf.getText() + ", " + jtfCost.getText() + ", " + calc());
pV.close();
} catch (FileNotFoundException ex) {
System.out.println("File not found");
} catch (IOException ioe) {
System.out.println("IOExcetion");
} catch (Exception e) {
System.out.println("General exception");
}
} else if (events.getSource() == jbLoad) {
BufferedReader br = null;
String line = null;
try {
br = new BufferedReader(new FileReader("121Lab1.csv"));
while ((line = br.readLine()) != null) {
lines.addAll(Arrays.asList(line.split(",[ ]*")));
}
} catch (FileNotFoundException ex) {
System.out.println("File not found");
} catch (IOException ioe) {
System.out.println("IOExcetion");
} catch (Exception e) {
System.out.println("General exception");
}
System.out.println(lines.size());
} else if (events.getActionCommand().equals("Next>") || events.getActionCommand().equals("<Prev")) {
move(events.getActionCommand());
}
}
public void move(String where) {
if (where.equals("Next>")) {
if ((index + 4) >= lines.size())
JOptionPane.showMessageDialog(jf, "No more entries");
else {
//String[] name = line.split(split);
//name nameNext = new name();
/*index = index + 4;
jtfItemName.setText(lines.get(index));
jtfCost.setText(lines.get(index+2));
jtfNumberOf.setText(lines.get(index + 1));
jtfAmountOwned.setText(lines.get(index + 3));*/
}
} else if (where.equals("<Prev")) {
if ((index - 4) < 0)
JOptionPane.showMessageDialog(jf, "No more entries");
else {
/*index = index - 4;
jtfItemName.setText(lines.get(index));
jtfCost.setText(lines.get(index+2));
jtfNumberOf.setText(lines.get(index + 1));
jtfAmountOwned.setText(lines.get(index + 3));*/
}
} else {
jtfItemName.setText(lines.get(0));
jtfCost.setText(lines.get(2));
jtfNumberOf.setText(lines.get(1));
jtfAmountOwned.setText(lines.get(3));
}
}
public static void main(String[] args) {
Orders test = new Orders();
}
}
import javax.swing.*;
导入java.awt.*;
导入java.awt.event.*;
导入java.io.*;
导入java.util.*;
//将实现动作侦听器的类的开头
公共类Orders扩展JFrame实现ActionListener{
//实例变量、文本字段和按钮
私有整数索引;
jf框架;
JTextField jtfItemName;
JTextField jtfNumberOf;
JTextField-jtfCost;
JTextField未拥有;
JButton jbCalculate;
JButton jbSave;
JButton jbClear;
JButton jbExit;
双重计算;
JButton jbLoad;
JButton jbPrev;
JButton jbNext;
字符串itemName;
字符串编号;
串成本;
无主弦;
ArrayList行;
字符串拆分=“,”;
//gui实现
公共秩序{
指数=0;
行=新阵列列表<>();
jf=新JFrame(“订单计算器”);
//窗格
JPanel pnl=新的JPanel();
pnl.setLayout(新的GridLayout(0,2));
JLabel jlFirst=新JLabel(“项目名称:”);
jlFirst.setHorizontalAlignment(JLabel.RIGHT);
jtfItemName=新的JTextField(10);
pnl.add(第一);
pnl.add(jtfItemName);
JLabel jlSecond=新的JLabel(“数量:”);
jlSecond.setHorizontalAlignment(JLabel.RIGHT);
jtfNumberOf=新的JTextField(10);
pnl.add(第二个);
pnl.add(jtfNumberOf);
JLabel jlThird=新JLabel(“成本”);
jlThird.setHorizontalAlignment(JLabel.RIGHT);
jtfCost=新的JTextField(10);
pnl.add(第三次);
pnl.add(jtfCost);
JLabel jlFourth=新JLabel(“拥有的金额:”);
jlFourth.setHorizontalAlignment(JLabel.RIGHT);
jtfAmountOwned=新的JTextField(10);
jtfAmountOwned.setEditable(false);
pnl.add(jl4);
pnl.add(无所有权);
JPanel jpSouth=newjpanel(newborderlayout());
JPanel-jpSouthUp=新的JPanel();
JPanel jpSouthDown=新的JPanel();
add(jpSouthUp,BorderLayout.NORTH);
add(jpSouthDown,BorderLayout.SOUTH);
//钮扣
jbCalculate=新的JButton(“计算”);
jbSave=新的JButton(“Save”);
jbClear=新的JButton(“Clear”);
jbExit=新的JButton(“Exit”);
jpSouthUp.add(jbCalculate);
jpSouthUp.add(jbSave);
jpSouthUp.add(jbClear);
jpSouthUp.add(jbExit);
//按钮底部
jbLoad=新的JButton(“加载”);
jbPrev=新的JButton(“”);
jpSouthDown.add(jbLoad);
jpSouthDown.add(jbPrev);
jpSouthDown.add(jbNext);
jf.add(pnl);
jf.add(jpSouth,BorderLayout.SOUTH);
jf.pack();
jf.setVisible(真);
jf.setDefaultCloseOperation(JFrame.EXIT\u ON\u CLOSE);
//动作监听器
jbCalculate.addActionListener(this);
jbSave.addActionListener(这个);
jbClear.addActionListener(this);
jbExit.addActionListener(this);
jbLoad.addActionListener(这个);
jbPrev.addActionListener(此);
jbNext.addActionListener(this);
}
公共双计算器(){
double number=double.parseDouble(jtfNumberOf.getText());
double cost=double.parseDouble(jtfCost.getText());
//双倍总和=数量*成本;
//计算=”+总和;
//jtfAmountOwned.setText(计算);
计算=数量*成本;
jtfAmountOwned.setText(计算+“”);
收益计算;
}
//参数构造函数
公共订单(String itemName、String numberOf、String cost、String AmonTowned){
this.itemName=itemName;
this.numberoff=numberoff;
成本=成本;
this.amontowned=amontowned;
}
public void setItemName(字符串itemName){
this.itemName=itemName;
}
公共字符串getItemName(){
返回itemName;
}
public void setnumberoff(字符串numberoff){
this.numberoff=numberoff;
}
公共字符串getNumberOf(){
返回号码;
}
公共无效设置成本(字符串成本){
成本=成本;
}
公共字符串getCost(){
退货成本;
}
public void setamontowned(字符串amontowned){
this.amontowned=amontowned;
}
公共字符串getAmonTowned(){
归无主;
}
已执行的公共无效操作(操作事件){
if(events.getSource()==jbExit){
系统出口(0);
}else if(events.getSource()==jbClear){
jtfItemName.setText(“”);
jtfNumberOf.setText(“”);
jtfCost.setText(“”);
jt未拥有。setText(“”);
}else if(events.getSource()==jbCalculate){
计算();
}else if(events.getSource()==jbSave){
试一试{
PrintWriter pV=新的PrintWriter(新的BufferedWriter(新的FileWriter(“121lab1.csv”,true));
pV.println(“'”+jtfItemName.getText()+”,“+jtfNumberOf.getText()+”,“+jtfCost.getText()+”,“+calc());
pV.close();
}捕获(FileNotFoundException ex){
System.out.println(“未找到文件”);
}捕获(ioe异常ioe){
System.out.println(“IOException”);
}捕获(例外e){
System.out.println(“一般例外”);
}
}else if(events.getSource()==jbLoad){
BufferedReader br=null;
字符串行=null;
试一试{
br=新的BufferedReader(新的文件读取器(“121Lab1.csv”);
而((line=br.readLine())!=null){
lines.addAll(Arrays.asList(line.split(“,[]*”)));
}
}捕获(FileNotFoundException ex){
System.out.println(“未找到文件”);
}捕获(ioe异常ioe){
System.out.println(“IOException”);
}捕获(例外e){
System.out.println(“一般例外”);
}
System.out.println(lines.size());
}else if(events.getActionCommand().equals(“Next>”)|| events.getActionCommand().equals(“”){
如果((索引+4)>=lines.size())
showMessageDialog(jf,“无更多条目”);
否则{
//String[]name=line.split(split);
//name nameNext=新名称();
/*指数=指数+4;
jtfItemName.setText(lines.get(index));
jtfCost.setText(lines.get(index+2));
jtfNumberOf.setText(lines.get(index+1));
jtUntowned.setText(lines.get(index+3))*/
}
}否则如果(where.e