簡體   English   中英

JTextArea滾動不起作用

[英]JTextArea scrolling not working

我試圖使JTextArea垂直滾動。 我做了一些研究,我很確定自己正在使用LayoutManager,而不是直接將JTextArea添加到父面板,並且正在設置JTextArea和JScrollPane的首選大小。 不知道我在這里缺少什么...這是代碼:

public class ConsolePane extends JDialog {
    private static final long serialVersionUID = -5034705087218383053L;

    public static final Dimension CONSOLE_DIALOG_SIZE = new Dimension(400, 445);
    public static final Dimension CONSOLE_LOG_SIZE = new Dimension(400, 400);
    public static final Dimension CONSOLE_INPUT_SIZE = new Dimension(400, 25);

    private static ConsolePane instance = new ConsolePane();

    public static ConsolePane getInstance() {
        return instance;
    }

    private JTextArea taLog;
    private JTextField tfInput;

    public ConsolePane() {
        this.setTitle("Console");
        JPanel contentPane = new JPanel();
        this.setContentPane(contentPane);
        contentPane.setLayout(new BorderLayout());
        contentPane.add(createConsoleLog(), BorderLayout.CENTER);
        contentPane.add(createConsoleInput(), BorderLayout.SOUTH);
        contentPane.setPreferredSize(CONSOLE_DIALOG_SIZE);
    }

    private JComponent createConsoleLog() {
        taLog = new JTextArea();
        taLog.setLineWrap(true);
        taLog.setPreferredSize(CONSOLE_LOG_SIZE);

        ((DefaultCaret) taLog.getCaret())
                .setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE);

        JScrollPane container = new JScrollPane(taLog);
        container
                .setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
        container
                .setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
        container.setPreferredSize(CONSOLE_LOG_SIZE);
        return container;
    }

    private JComponent createConsoleInput() {
        tfInput = new JTextField();
        tfInput.setPreferredSize(CONSOLE_INPUT_SIZE);
        tfInput.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                taLog.append(tfInput.getText() + "\r\n");
                tfInput.setText("");
            }
        });
        tfInput.requestFocus();
        return tfInput;
    }

    public static void main(String[] args) {
        ConsolePane.getInstance().pack();
        ConsolePane.getInstance().setVisible(true);
    }
}

提前謝謝!

嘗試以下代碼,它可能會幫助您

JTextArea txt=new JTextArea();
JScrollPane pane=new JScrollPane(txt,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);

我自己想通了。 taLog.setPreferredSize()阻止滾動。 刪除了,一切正常。 謝謝大家的幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM