TextArea布局中的ScrollPane(null)

时间:2016-03-17 16:33:55

标签: java

以下是我的代码的一部分:

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;

public class WindowTest {
    JFrame window = new JFrame();
    JPanel panel = new JPanel();
    JTextArea text = new JTextArea();
    JScrollPane scroll = new JScrollPane(text);

    private WindowTest() {
        createWindow();
    }

    public void createWindow() {
        window.setLayout(null);
        window.setVisible(true);
        panel.setVisible(true);
        text.setBounds(20, 100, 320, 270);
        scroll.setVisible(true);
        window.add(scroll);
    }

    public static void main(String[] args) {
        new WindowTest().createWindow();
    }
}

我想知道如何将滚动条添加到TextArea" text"。它是一个数据库应用程序,它将数据字符串发送到TextArea。我希望应用程序在必要时显示滚动条(垂直或水平) - TextArea中的字符串太多。我一直在尝试很多东西,但没有任何作用。布局必须为null,因为我手动创建了所有组件,我不想从头开始设置所有内容(它只是代码的一部分)。

2 个答案:

答案 0 :(得分:3)

 text.setBounds(20, 100, 320, 270);

不要在JTextArea组件上设置边界。它需要变大才能显示整个文本。然后,JScrollPane将显示JTextArea的一部分。

更新:也可以使用合适的布局管理器,不要使用绝对定位。

更正后的代码:

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

public class WindowTest {
    JFrame window = new JFrame();
    JTextArea text = new JTextArea();
    JScrollPane scroll = new JScrollPane(text);

    private WindowTest() {
        createWindow();
    }

    public void createWindow() {
        window.setLayout(new BorderLayout());
        window.add(scroll, BorderLayout.CENTER);
        window.setVisible(true);
    }

    public static void main(String[] args) {
        new WindowTest().createWindow();
    }
}

答案 1 :(得分:2)

你的错误:

  • 您必须设置滚动窗格的边界而不是textarea。
  • window.setVisible(true);必须在最后调用。
  • 您必须设置JFrame的大小。

以下代码为我工作。

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;

public class WindowTest {
    JFrame window = new JFrame();

    JTextArea text = new JTextArea();
    JScrollPane scroll = new JScrollPane(text);

    private WindowTest() {
        createWindow();
    }

    public void createWindow() {
        window.setLayout(null);

        scroll.setBounds(20, 100, 320, 270);
        window.add(scroll);

        window.setSize(500, 500);
        window.setVisible(true);

    }

    public static void main(String[] args) {
        new WindowTest().createWindow();
    }
}