首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JScrollPane未在JTextArea中滚动且仍处于禁用状态

JScrollPane未在JTextArea中滚动且仍处于禁用状态
EN

Stack Overflow用户
提问于 2022-10-18 17:57:57
回答 1查看 61关注 0票数 -1

我试图使用JTextArea制作一个简单的文本编辑器,但是当我输入更多的文本以使其脱离屏幕时,JScrollPane仍然没有启用,也不允许我滚动。我在网上找了好几个小时的答案,但似乎什么也帮不了我。这是我的代码:

代码语言:javascript
运行
复制
import mods.JFrame.JFrameMods;
import javax.swing.*;

public class NimbleIDE {
    
    JFrame frame;
    JTextArea main;
    JScrollPane scroll = new JScrollPane(main);
    
    NimbleIDE() {
        frame = new JFrame();
        main = new JTextArea();
        frame.add(main);
        
        //Frame setting up
        initialiseBlankJFrame(frame, "NimbleIDE");
        frame.add(scroll);
        
        //Text setting up
        main.setSize(JFrameMods.getScreenWidth() - 14, JFrameMods.getScreenHeight()); //JFrameMods is a custom class I made previously
        main.setWrapStyleWord(true);
        main.setLineWrap(true);
        main.setEditable(true);
        
        //Scroll setting up
        scroll.setBounds(JFrameMods.getScreenWidth() - 14, 0, 16, JFrameMods.getScreenHeight() - 23);
        scroll.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
        
    }
    
    initialiseBlankJFrame(JFrame frame, String title) {
        frame.setVisible(true);
        frame.setExtendedState(MAXIMIZED_BOTH);
        frame.setLayout(null);
        frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
        frame.getContentPane().setBackground(Color.white);
        frame.setTitle(title);
    }
    
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-18 20:23:51

这是:

代码语言:javascript
运行
复制
JTextArea main;
JScrollPane scroll = new JScrollPane(main);

这实际上意味着:

代码语言:javascript
运行
复制
JScrollPane scroll = new JScrollPane(null);

您正在将一个null对象传递给JScrollPane

您可以通过将实际的JTextArea对象传递到滚动窗格来解决问题。还请注意,滚动窗格是您必须添加到JFrame中的唯一组件。就像这样:

代码语言:javascript
运行
复制
public class NimbleIDE {
    JFrame frame;
    JTextArea main;
    JScrollPane scroll;
    
    NimbleIDE() {
        frame = new JFrame();
        main = new JTextArea();
        scroll = new JScrollPane(main);

        //Frame setting up
        initialiseBlankJFrame(frame, "NimbleIDE");
        frame.add(scroll);

        // ...
    }
    // ...
}

您可能还想看看以下Java Trails:

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

https://stackoverflow.com/questions/74115451

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档