如果这已在其他地方得到回答,请提前抱歉,我可能只是在搜索错误的标签。
我希望使用实现 ActionListener 的匿名内部类创建一个包含各种变量的日志文件。这将附加到一个 JButton。
使用格式化程序,可以准确地为我提供一行所需的内容,但我想保留此事件的所有先前日志(我不在乎它是在最后一个条目之前还是之后)。
在我通过一些浏览本网站和其他网站时发现的各种方法碰壁后,您可以使用带有 Formatter 的构造函数中的 append 方法来做到这一点。
是否可以在带有 Formatter 的内部类中使用 append ?
如果不能,您能否推荐另一个仍能满足我需求的 Java 编写器?我还是个初学者,所以越简单越好……就目前而言。
如果内部类和格式化程序没有任何额外的导入/包是可能的,请给我们一个提示或链接,我会继续搜索。
我附上了一个小的可编译示例代码,如果有人有兴趣玩,它可能会有所帮助。
谢谢,周末战士84
import java.awt.FlowLayout;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Formatter;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class TestProgram extends JFrame{
private FlowLayout lay;
public TestProgram(){
super("Sample Program");
lay = new FlowLayout();
setLayout(lay);
final JLabel label1 = new JLabel("Label One");
add(label1);
final TextField field1 = new TextField(8);
add(field1);
final JLabel label2 = new JLabel("Exception Label");
add(label2);
final JButton button1 = new JButton
("Log Data");
add(button1);
button1.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
if(button1.isSelected());
try{
Formatter fm = new Formatter("C:\\Test\\testlog.txt");
fm.format("%s%s%s%s", "Sample Value: ",label1.getText(),
" Sample Value2: ",field1.getText());
fm.close();
}
catch(Exception ee){
label2.setText("Make Sure Path exists, C:\\Test\\testlog.txt");
}
}
}
);
}
}
主要的
import javax.swing.JFrame;
public class TestMain{
public static void main (String[] args){
TestProgram ts = new TestProgram();
ts.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ts.setSize(1200,500);
ts.setVisible(true);
}
}