【发布时间】:2016-03-27 16:29:43
【问题描述】:
我有一个从文本文件中获取内容的 JTextArea。每当修改文件文本时,如何修改文本区域的内容? 这是上下文中的代码:
public class AdminGui {
private JFrame frame = new JFrame();
private JPanel xPanel = new JPanel(new GridLayout(1, 3, 20, 20));
private JPanel labelPanel = new JPanel(new GridLayout(2, 1, 400, 400));
private JPanel textPanel = new JPanel(new GridLayout(2, 1, 400, 400));
private JPanel btnPanel = new JPanel(new GridLayout(4, 1, 20, 20));
private JLabel loginLabel = new JLabel();
private JLabel nameLabel = new JLabel("Item name:");
private JLabel quantityLabel = new JLabel("Quantity:");
private JTextField nameText = new JTextField();
private JTextField quantityText = new JTextField();
private JButton addItem = new JButton("Add new item");
private JButton removeItem = new JButton("Remove item");
private JButton addToStock = new JButton("Add to stock");
private JButton removeFromStock = new JButton("Remove from stock");
private JTextArea items = new JTextArea();
private JButton history = new JButton("Command history");
File file1 = new File("D:\\Documents\\JavaProj\\OrderManagement\\res\\items.txt");
Scanner fileScanner;
public AdminGui(String username) {
try {
fileScanner = new Scanner(file1);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
System.err.println(e);
}
while (fileScanner.hasNext()) {
items.append(fileScanner.nextLine()+"\n");
}
items.setEditable(false);
frame.setLayout(new BorderLayout());
loginLabel.setText("You are logged in as " + username);
loginLabel.setHorizontalAlignment(JLabel.CENTER);
frame.add(loginLabel, BorderLayout.NORTH);
frame.add(history, BorderLayout.SOUTH);
labelPanel.add(nameLabel);
labelPanel.add(quantityLabel);
frame.add(labelPanel, BorderLayout.WEST);
textPanel.add(nameText);
textPanel.add(quantityText);
btnPanel.add(addItem);
btnPanel.add(removeItem);
btnPanel.add(addToStock);
btnPanel.add(removeFromStock);
xPanel.add(textPanel);
xPanel.add(btnPanel);
xPanel.add(items);
frame.add(xPanel, BorderLayout.CENTER);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(600, 600);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
}
因此,每当 items.txt 文件发生更改时,我都希望 items textArea 相应地更改。
【问题讨论】:
-
您可以存储文件的最后修改日期,如果修改日期发生变化,则可以获取文件内容。