将ScrollBar添加到JTextArea

时间:2013-08-12 10:02:50

标签: java swing jscrollpane layout-manager null-layout-manager

我想在我的文本区域添加滚动条,我知道添加滚动条的简单代码,但是当我将滚动条的代码放入时,整个文本区域消失了!

有什么问题?

这是我的代码:

private JFrame frame;
private JTextArea textarea;

public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
        public void run() {
            try {

                SmsForm window = new SmsForm();
                window.frame.setVisible(true);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });
}

public SmsForm() {
    initialize();
}

private void initialize() {
    frame = new JFrame("???");
    frame.setBounds(100, 100, 450, 300);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.getContentPane().setLayout(null);
    JPanel groupBoxEncryption = new JPanel();

    final JTextArea textarea=new JTextArea();
    textarea.setBounds(50, 100, 300, 100);
    frame.getContentPane().add(textarea);
    textarea.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);

    JScrollPane scrollPanePlain = new JScrollPane(textarea);
    groupBoxEncryption.add(scrollPanePlain);
    scrollPanePlain.setBounds(100, 30, 250, 100);
    scrollPanePlain.setVisible(true);

2 个答案:

答案 0 :(得分:2)

有很多问题

  • 您需要将JPanel groupBoxEncryption添加到应用JFrame
  • 不要将textarea添加到框架中 - 组件只能有一个父组件
  • 如前所述,您使用的null布局没有大小组件 - 忘记不是布局管理器。
  • 由于JPanel默认使用FlowLayout,因此您需要覆盖面板getPreferredSize的{​​{1}}。更好的是使用自动调整组件大小的groupBoxEncryption等布局管理器

实施例

GridLayout

答案 1 :(得分:2)

  1. Java GUI可能必须在许多平台上工作,在不同的屏幕分辨率和使用不同的PLAF。因此,它们不利于组件的精确放置。要组织强大的GUI组件,而是使用布局管理器,或combinations of them,以及布局填充和& white space的边框。
  2. 在行数和列数中建议文本区域的首选大小。
  3. 将文本区域添加到滚动窗格,然后将滚动窗格添加到GUI。