我试图使用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);
}
}
发布于 2022-10-18 20:23:51
这是:
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 Trails:
https://stackoverflow.com/questions/74115451
复制相似问题