我正试图使用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>在容器中布置零部件(