我有以下问题: 在我的JTextArea中,我插入了一个默认字符串,文件上传后,必须使用新的措辞对其进行更新。 我有一个问题,无法完成JTextArea的实时刷新,但是如果我注销并登录,我将看到更改后的字符串。
public void createWindow()
{
// some code...
JTextArea textArea = new JTextArea(1,1);
String all = "Nothing Infractions";
try {
all = new Scanner (file).useDelimiter("\\A").next();
textArea =new JTextArea(100,1);
} catch (FileNotFoundException e1) {
textArea =new JTextArea(1,1);
}
JScrollPane scroll = new
JScrollPane(textArea,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
textArea.setText(all);
frmUser.getContentPane().add(textArea);
更新:
该文本区域被认为写得没有小节,然后通过了随机执行的程序,并将其分配给每个用户,这是问题所在,并且在分配它们时,所有登录的用户都不会自动更新该部分文本,没有违规记录。
我使用Java 8
答案 0 :(得分:0)
这是一个MCVE(最小,完整和可验证的示例,请参见https://stackoverflow.com/help/mcve),您可以根据自己的问题剪切并粘贴该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();
}
}
答案 1 :(得分:0)
使用revalidate()
和repaint()
。