我想创建一个简单的独立应用程序,它将从用户那里获取一些输入(一些数字和数学函数f(x,y ...))并将它们写入文件。然后在这个文件的帮助下,我将运行一个命令。
我需要的基本成分:
- 用于用户输入的JTextArea。
- ButtonHandler / ActionListener并将输入写入(txt)文件
- 执行命令的ButtonHandler / ActionLister
最好的方法是什么?
我当前正在运行的代码(基本上是一个玩具) - 它不会写任何东西,只是执行 - 是:
import java.applet.*;
import java.lang.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.Dialog;
import java.io.IOException;
import java.io.InputStream;
import java.io.*;
import java.util.*;
import java.io.BufferedWriter;
public class Runcommand3
{
public static void main(String[] args) throws FileNotFoundException, IOException
{
//JApplet applet = new JApplet();
//applet.init();
final JFrame frame = new JFrame("Change Backlight");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel();
panel.setLayout(null);
frame.add(panel);
JButton button = new JButton("Click me to Run");
button.setBounds(55,100,160,30);
panel.add(button);
frame.setSize(260,180);
frame.setVisible(true);
//This is an Action Listener which reacts to clicking on the button
button.addActionListener(new ButtonHandler());
}
}
class ButtonHandler implements ActionListener{
public void actionPerformed(ActionEvent event){
double value = Double.parseDouble(
JOptionPane.showInputDialog("please enter backlight value"));
//File theFile = new File("thisfile.txt");
//theFile.write(value);
String command = "xbacklight -set " + value;
try{Runtime run = Runtime.getRuntime();
Process pr = run.exec(command);}
catch(IOException t){t.printStackTrace();}
}
}
在上面的示例中,如何将'value'写入文件?那么,如何添加更多输入(更多文本字段)?我可以在同一个班级做,还是需要更多? 我的困惑(主要但不仅仅是)来自于ButtonHandler类内部我无法定义任何其他对象(即打开和写入文件等)这一事实。
答案 0 :(得分:3)
这是我写入文件的方式。我将让您将此代码转换为GUI以进行练习。详情请见BufferedWriter和FileWriter
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.util.Scanner;
public class Files {
public static void main(String args[]){
System.out.print("Enter Text: ");
Scanner scan = new Scanner(System.in);
String text = scan.nextLine();
FileWriter fWriter = null;
BufferedWriter writer = null;
try {
fWriter = new FileWriter("text.txt");
writer = new BufferedWriter(fWriter);
writer.write(text);
writer.newLine();
writer.close();
System.err.println("Your input of " + text.length() + " characters was saved.");
} catch (Exception e) {
System.out.println("Error!");
}
}
}
答案 1 :(得分:1)
对于第二个问题,您可能会考虑在JFrame上使用JTextField,以便用户输入行而不是JOptionPane。它只是一个简单的文本框,每次按下按钮时都可以将文件框的内容添加到文件中:
public static void main(String[] args) {
JTextField myTextField = new JTextField();
// Your code, set size and position of textfield
panel.add(myTextField);
}
class ButtonHandler implements ActionListener {
public void actionPerformed(ActionEvent event) {
String text = myTextField.getText();
myTextField.setText("");
new BufferedWriter(new FileWriter("text.txt")).write(text).newLine().close();
// the rest of your code
}
}