JScrollPane未在JTextArea中滚动,并且处于禁用状态



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

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

}

这:

JTextArea main;
JScrollPane scroll = new JScrollPane(main);

实际上意味着:

JScrollPane scroll = new JScrollPane(null);

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


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

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踪迹:

  • 如何使用滚动窗格(Java™教程>使用Swing创建GUI>使用回转部件(
  • 没有布局管理器(绝对定位((Java™教程>使用Swing创建GUI>在容器中布置零部件(

最新更新