У меня проблемы с выяснением, почему принтер не создает файл, когда вы вводите его в текстовое поле выходного файла, я не могу двигаться дальше, пока не выясню, в чем проблема. эта программа gui, которая рассчитывает проценты и выводит их в текстовый файл, но я не могу заставить эту часть работать, я был бы очень признателен, если бы кто-то мог взглянуть на нее, так как во всей программе есть только один печатник, так Пока я собираюсь добавить еще, как только я преодолею это препятствие. Я не уверен, что случилось с автором печати.
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;
import javax.swing.JTextField;
public class InterestCal {
public static void main(String[] args)
{
JFrame f = new JFrame("Interest Computer");
f.setSize(500, 300);
JTabbedPane tabObj = new JTabbedPane();
JPanel panel1 = new JPanel();
panel1.setLayout(new GridLayout(4,2,3,3));
tabObj.addTab("Simple",null,panel1,"FirstPanel");
JPanel panel2 = new JPanel();
panel2.setBackground(Color.YELLOW);
tabObj.addTab("Compound",null,panel2,"Second Panel");
JPanel panel3 = new JPanel();
tabObj.addTab("Continuous",panel3);
//add the tabs to the panel
f.add(tabObj);
panel1.setLayout(new GridLayout(5,2,3,3));
//PANEL NUMBER 1
JLabel principal1 = new JLabel("Principal $");
JLabel annual1 = new JLabel("Annual % Rate");
JLabel Years1 = new JLabel("Years");
JLabel outputFile1 = new JLabel("Output File");
JTextField principalField1 = new JTextField ("");
JTextField annualField1 = new JTextField ("");
JTextField YearsField1 = new JTextField ("");
JTextField outputFileField1 = new JTextField ("");
//PANEL NUMBER 1
//adds label then adds text-field
panel1.add(principal1);
panel1.add(principalField1);
panel1.add(annual1);
panel1.add(annualField1);
panel1.add(Years1);
panel1.add(YearsField1);
panel1.add(outputFile1);
panel1.add(outputFileField1);
JButton button1 = new JButton("Compute Simple Interest");
panel1.add(button1);
button1.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e) {
int principalInPanel1 = Integer.parseInt(principalField1.getText());
double interestRateinPanel1 = Double.parseDouble(annualField1.getText());
int yearsInPanel1 = Integer.parseInt(YearsField1.getText());
File filename =new File(outputFileField1.getText());
//added this so i can use it outside the try/catch block
PrintWriter writer = null;
try {
writer = new PrintWriter(filename);
} catch (FileNotFoundException e1) {
e1.printStackTrace();
}
for (int x = 0; x < yearsInPanel1+1; x++) {
double SimpleInterest = principalInPanel1*(Math.pow(1+interestRateinPanel1,x));
writer.format("%d %.2f\n",x,SimpleInterest);
System.out.printf(String.format("%d %.2f\n",x,SimpleInterest));
}
writer.close();
System.exit(0);
}
});
//PANEL NUMBER 2
panel2.setLayout(new GridLayout(5,2,3,3));
JLabel principal2 = new JLabel("Principal $");
JLabel annual2 = new JLabel("Annual % Rate");
JLabel Years2 = new JLabel("Years");
JLabel outputFile2 = new JLabel("Output File");
JTextField principalField2 = new JTextField ("");
JTextField annualField2 = new JTextField ("");
JTextField YearsField2 = new JTextField ("");
JTextField outputFileField2 = new JTextField ("");
//PANEL NUMBER 2
//adds label then adds text-field
panel2.add(principal2);
panel2.add(principalField2);
panel2.add(annual2);
panel2.add(annualField2);
panel2.add(Years2);
panel2.add(YearsField2);
panel2.add(outputFile2);
panel2.add(outputFileField2);
//PANEL NUMBER 3
panel3.setLayout(new GridLayout(5,2,3,3));
JLabel principal3 = new JLabel("Principal $");
JLabel annual3 = new JLabel("Annual % Rate");
JLabel Years3 = new JLabel("Years");
JLabel outputFile3 = new JLabel("Output File");
JTextField principalField3 = new JTextField ("");
JTextField annualField3 = new JTextField ("");
JTextField YearsField3 = new JTextField ("");
JTextField outputFileField3 = new JTextField ("");
//PANEL NUMBER 3
//adds label then adds text-field
panel3.add(principal3);
panel3.add(principalField3);
panel3.add(annual3);
panel3.add(annualField3);
panel3.add(Years3);
panel3.add(YearsField3);
panel3.add(outputFile3);
panel3.add(outputFileField3);
f.setLocationRelativeTo(null);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
}