0

我想在我的文本区域中添加一个滚动条,并且我知道添加滚动条的简单代码,但是当我输入滚动条的代码时,整个文本区域就会消失!

问题是什么?

这是我的代码:

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);
4

2 回答 2

2
  1. Java GUI 可能必须在多个平台、不同的屏幕分辨率和使用不同的 PLAF 上工作。因此,它们不利于组件的精确放置。要为健壮的 GUI 组织组件,请改为使用布局管理器或它们的组合,以及用于空白空间的布局填充和边框。
  2. 以行数和列数建议文本区域的首选大小。
  3. 在将滚动窗格添加到 GUI 之前,将文本区域添加到滚动窗格。
于 2013-08-12T12:32:50.243 回答
2

有很多问题

  • 您需要添加JPanel groupBoxEncryption到应用程序JFrame
  • 不要添加textarea到框架 - 组件只能有一个父组件
  • 如前所述,您使用null的布局不会调整组件大小 - 忘记不是布局管理器。
  • JPanel默认情况下,您FlowLayout需要覆盖getPreferredSize面板groupBoxEncryption。最好使用布局管理器,例如GridLayout自动调整组件大小

例子

JPanel groupBoxEncryption = new JPanel(new GridLayout());
于 2013-08-12T10:18:50.387 回答