滚动条不适用于JTextArea,为什么?

时间:2017-04-08 17:12:38

标签: java

我正在尝试创建一个可滚动的文本区域(就像我现在正在编写的那样,就像在堆栈溢出中一样)。似乎滚动窗格和文本区域是互斥的,我想在它们之间建立连接

package Notepad;

import java.awt.EventQueue;
import java.awt.Font;

import javax.swing.JFrame;
import java.awt.BorderLayout;

import javax.swing.JTextArea;
import javax.swing.JScrollBar;

public class test {

    private JFrame frame;
    private Font f = new Font(null);


    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    test window = new test();
                    window.frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    public test() {
        initialize();
    }

    private void initialize() {

        frame = new JFrame();
        frame.setBounds(100, 100, 450, 300);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().setLayout(new BorderLayout(0, 0));


        JTextArea textArea = new JTextArea();
        frame.getContentPane().add(textArea, BorderLayout.CENTER);
        textArea.setLineWrap(true);
        textArea.setFont(f.deriveFont(40f));


        JScrollBar scrollBar = new JScrollBar();

        frame.getContentPane().add(scrollBar, BorderLayout.EAST);



    }

}

3 个答案:

答案 0 :(得分:1)

JTextArea textArea = new JTextArea();
textArea.setLineWrap(true);
textArea.setFont(f.deriveFont(40f));

JScrollPane scrollPane = new JScrollPane(textArea);
frame.getContentPane().add(scrollPane, BorderLayout.CENTER);

答案 1 :(得分:1)

使用JScrollPane而不是JScrollBar

错:

    JScrollBar scrollBar = new JScrollBar();

右:

    JScrollPane scroller = new JScrollPane(textArea);

您可以像这样设置此ScrollPane的大小:

    Dimension size = new Dimension (0, 50);
    scroller.setPreferredSize(size);

注意:当您使用JScrollPanes时,请确保将其放在括号中,否则它将无法显示。

答案 2 :(得分:0)

对不起,伙计们。我导入的JScrollBar不是JScrollPane。谢谢你们。我将测试此修复程序并回复您。

编辑:

有效。谢谢你们!!!“