首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Java Swing JTextArea滚动条未在内部显示

Java Swing JTextArea滚动条未在内部显示
EN

Stack Overflow用户
提问于 2016-04-08 04:38:39
回答 3查看 1K关注 0票数 0

我正在尝试在JTextArea中添加滚动条,但在文本区域中不显示滚动条。

这是我的代码,

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import java.awt.Color;
import java.awt.Dimension;

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

public class Test {

    public static void main(String[] args) {
        JFrame frame = new JFrame("MySql Console");
        frame.setSize(400, 300);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JPanel panel = new JPanel();
        frame.add(panel);
        panel.setLayout(null);

        JTextArea txtQuery = new JTextArea ();
        txtQuery.setBounds(10, 10, 365, 45);        
        JScrollPane scroll = new JScrollPane (txtQuery, 
           JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
        //scroll.setPreferredSize(new Dimension(100, 50));
        panel.add(scroll);
        panel.add(txtQuery);

        frame.setVisible(true);
    }

}

尝试了互联网上的一些替代方案,但仍然不起作用。

EN

回答 3

Stack Overflow用户

发布于 2016-04-08 04:59:32

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   panel.setLayout(null);

    JTextArea txtQuery = new JTextArea ();
    txtQuery.setBounds(10, 10, 365, 45);        
    JScrollPane scroll = new JScrollPane (txtQuery, 
       JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
    //scroll.setPreferredSize(new Dimension(100, 50));
    panel.add(scroll);
    panel.add(txtQuery);

  1. 请勿使用空布局。布局管理器将确定组件的首选大小,然后滚动窗格可以确定何时需要滚动条。当您向文本区域添加文本时,滚动条将自动出现。
  2. 不会将文本区域添加到面板。一个组件只能有一个父项。您已通过指定文本区域的行/列将文本区域添加到scrollpane.
  3. Give文本区域中。

因此,修改后的代码应该如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   //panel.setLayout(null);

    JTextArea txtQuery = new JTextArea (5, 20);
    //txtQuery.setBounds(10, 10, 365, 45);        
    JScrollPane scroll = new JScrollPane (txtQuery);
    //scroll.setPreferredSize(new Dimension(100, 50));
    panel.add(scroll);
    //panel.add(txtQuery);
票数 6
EN

Stack Overflow用户

发布于 2016-04-08 06:05:15

请在下面删除它们,然后一切都会正常工作。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
panel.setLayout(null);

为了让你的应用程序更有效地工作,还需要考虑@camickr answer中的要点。

票数 1
EN

Stack Overflow用户

发布于 2016-04-08 04:56:20

将视口添加到JTextArea中是否有帮助?

类似于jScrollPane.setViewportView(jTextArea);的东西?如果这不起作用,您可能需要创建一个GroupLayout块。这并不一定是所有事情都要考虑的困难。我有这个:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
javax.swing.GroupLayout layout = new 
javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap(118, Short.MAX_VALUE)
                .addComponent(jScrollPane, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(116, 116, 116))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap(105, Short.MAX_VALUE)
                .addComponent(jScrollPane, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(99, 99, 99))
        );

        pack();
    }

希望这能有所帮助!祝你好运:D

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36491640

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文