【问题标题】:How can I add a scroll bar to a text area?如何将滚动条添加到文本区域?
【发布时间】:2022-01-13 05:25:21
【问题描述】:

请任何人告诉我如何将滚动条添加到JTextArea。我尝试了很多东西。但仍然无法得到它。我复制了一些与文本区域相关的代码。

public class main extends JPanel {
    private JTextArea jcomp1;

    public main() {
         jcomp1 = new JTextArea(5, 5);
         setPreferredSize(new Dimension(944, 574));
        // setPreferredSize (new Dimension (1024, 1080));
        setLayout(null);

        //add components
        
        add(jcomp1);
        jcomp1.setBounds(110, 165, 330, 300);
    }

    public static void main(String[] args) {
        JFrame frame = new JFrame("Paraphrasing Tool");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().add(new main());
        frame.pack();
        frame.setVisible(true);
    }
}

【问题讨论】:

  • 1) 不要使用“返回”按钮编辑帖子。而是使用标签下方的edit 链接。这样,您就不会填充其他人所做的编辑(例如隐藏缺少的} 的代码的恶劣格式)。 2) 避免为组件调用 set maximum / minimum / preferred 尺寸。通过设置列数和行数,JTextArea(例如)的大小会更好。 3) 非常重要的是,不要使用null 布局。除了许多常见问题外,它们还会导致滚动窗格失败。 4) 类名中的每个单词都应以大写字母开头。

标签: java swing jtextarea


【解决方案1】:

Oracle 有一个有用的教程,Creating a GUI With Swing。跳过 Netbeans 部分。

正如 Andrew 所说,您必须将 JTextArea 放置在 JScrollPane 内,然后将 JScrollPane 放置在具有 Swing 布局的 JPanel 内。我用了BorderLayout

这是我键入几行后的 GUI。

这是完整的可运行代码。

import java.awt.BorderLayout;
import java.awt.Insets;

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

public class JTextAreaExample extends JPanel {

    private static final long serialVersionUID = 1L;
    
    private JTextArea jcomp1;

    public JTextAreaExample() {
        this.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
        this.setLayout(new BorderLayout());
        jcomp1 = new JTextArea(5, 30);
        jcomp1.setMargin(new Insets(5, 5, 5, 5));
        JScrollPane scrollPane = new JScrollPane(jcomp1);
        scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
        add(scrollPane);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                JFrame frame = new JFrame("Paraphrasing Tool");
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                
                frame.add(new JTextAreaExample(), BorderLayout.CENTER);
                
                frame.pack();
                frame.setLocationByPlatform(true);
                frame.setVisible(true);
            }
        });
    }

}

【讨论】:

    【解决方案2】:

    将文本区域添加到JScrollPane(的视口)。最简单的方法是在构造函数中添加它。然后将滚动窗格添加到具有布局的面板(在使用布局的 GUI 中)。

    【讨论】:

    • 非常感谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多