Вот MCVE (минимальный, полный и проверяемый пример, см. https://stackoverflow.com/help/mcve), из которого вы вырезали и вставляли по мере необходимости для вашего вопроса. Приведенный ниже пример принципиально не отличается от вашего вопроса, но позволяет другим пользователям в StackOverflow, чтобы воспроизвести проблему и передать предложения или решения.
Помимо изменения вопроса, укажите, какую версию Java вы используете.
Исходя из того, что вы сказали, вам, вероятно, потребуется внедрить некоторый тип слушателя, чтобы определить, когда изменяется содержимое файла - или оно создается и никогда не изменяется?
190418 1646Z: добавлена кнопка обновления для вашего последнего комментария. Дайте мне знать, если вы предпочитаете, чтобы окно обновлялось без нажатия кнопки.
package javaapplication7;
import java.awt.Color;
import java.awt.Font;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
public class FileWatcher extends JFrame {
static final File WATCH_FILE = new File("c:\\temp\\java7.txt");
static final String DELIMITER = "\n";
private JPanel panel = new JPanel();
private JTextArea textArea = new JTextArea(20, 20);
public FileWatcher() {
JFrame frame = new JFrame();
frame.setSize(600, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
frame.setTitle("File Watcher");
frame.add(createPanel());
frame.pack();
}
private JPanel createPanel() {
// some code...
JPanel tempPanel = getPanel();
GridBagConstraints gbc = new GridBagConstraints();
tempPanel.setLayout(new GridBagLayout());
JButton button = new JButton("Refresh");
button.addMouseListener(new MouseListener() {
@Override
public void mouseClicked(MouseEvent e) {
getUpdatedText();
}
@Override
public void mousePressed(MouseEvent e) {
}
@Override
public void mouseReleased(MouseEvent e) {
}
@Override
public void mouseEntered(MouseEvent e) {
}
@Override
public void mouseExited(MouseEvent e) {
}
});
gbc.anchor = GridBagConstraints.NORTH;
getPanel().add(button, gbc);
getTextArea().setFont(new Font("Verdana", Font.BOLD, 16));
getTextArea().setBorder(BorderFactory.createEtchedBorder());
getTextArea().setLineWrap(true);
getTextArea().setWrapStyleWord(true);
getTextArea().setOpaque(true);
getTextArea().setVisible(true);
getUpdatedText();
JScrollPane scroll = new JScrollPane(getTextArea(), JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
scroll.setBorder(BorderFactory.createLineBorder(Color.blue));
scroll.setVisible(true);
// frmUser.getContentPane().add(textArea);
gbc.gridy = 1;
gbc.weightx = 1;
gbc.fill = GridBagConstraints.HORIZONTAL;
tempPanel.add(scroll, gbc);
return tempPanel;
}
public void getUpdatedText() {
String all = new String();
try (Scanner scanner = new Scanner(WATCH_FILE).useDelimiter(DELIMITER)) {
while (scanner.hasNext()) {
all = all.concat(scanner.next()).concat(DELIMITER);
}
} catch (FileNotFoundException ex) {
// swallow, next line covers it
}
if (all.isEmpty()) {
all = "No Infractions";
}
getTextArea().setText(all);
}
public JPanel getPanel() {
return panel;
}
public void setPanel(JPanel panel) {
this.panel = panel;
}
public JTextArea getTextArea() {
return textArea;
}
public void setTextArea(JTextArea textArea) {
this.textArea = textArea;
}
public static void main(String[] args) {
FileWatcher javaApplication7 = new FileWatcher();
}
}