在方法中刷新JTextArea

时间:2019-04-17 18:05:43

标签: java swing

我有以下问题: 在我的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

2 个答案:

答案 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()