向 JTextArea 添加垂直滚动条
Adding a vertical scroll bar to a JTextArea
我正在制作一个简单的 GUI,它有一个 JTextArea,我可以在其中粘贴一个字符串。当字符串太长时,JTextArea 会填满,我可以看到文字低于我为文本设置的界限区域。我想在此文本区域添加一个垂直滚动条。
public class GUI implements ActionListener {
private static JTextArea fileContents;
public static void main(String[] args) {
JFrame frame = new JFrame();
JPanel panel = new JPanel();
frame.setSize(700, 500);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(panel);
panel.setLayout(null);
fileContents = new JTextArea();
fileContents.setBounds(175, 75, 275, 275);
panel.add(fileContents);
JScrollPane sp = new JScrollPane();
sp.add(fileContents, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
panel.add(sp);
我在进行此设置时遇到错误。
Exception in thread "main" java.lang.IllegalArgumentException: illegal component position
at java.desktop/java.awt.Container.addImpl(Container.java:1111)
at java.desktop/java.awt.Container.add(Container.java:489)
at harness.GUI.main(HarnessGUI.java:60)
此代码有效:
JFrame frame = new JFrame();
JPanel panel = new JPanel();
frame.setSize(700, 500);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(panel);
frame.setVisible(true);
panel.setLayout(null);
fileContents = new JTextArea();
JScrollPane sp = new JScrollPane(fileContents);
sp.setBounds(175, 75, 300, 300);
panel.add(sp);
您有 2 个问题:
- 如果
fileContents
添加到 sp
又添加到 panel
,则不需要将 fileContents
添加到 panel
。
- 使用
JScrollPane
时,您应该仅使用构造器 JScrollPane(Component view)
添加 Component
,而不是使用 add()
方法。
我正在制作一个简单的 GUI,它有一个 JTextArea,我可以在其中粘贴一个字符串。当字符串太长时,JTextArea 会填满,我可以看到文字低于我为文本设置的界限区域。我想在此文本区域添加一个垂直滚动条。
public class GUI implements ActionListener {
private static JTextArea fileContents;
public static void main(String[] args) {
JFrame frame = new JFrame();
JPanel panel = new JPanel();
frame.setSize(700, 500);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(panel);
panel.setLayout(null);
fileContents = new JTextArea();
fileContents.setBounds(175, 75, 275, 275);
panel.add(fileContents);
JScrollPane sp = new JScrollPane();
sp.add(fileContents, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
panel.add(sp);
我在进行此设置时遇到错误。
Exception in thread "main" java.lang.IllegalArgumentException: illegal component position
at java.desktop/java.awt.Container.addImpl(Container.java:1111)
at java.desktop/java.awt.Container.add(Container.java:489)
at harness.GUI.main(HarnessGUI.java:60)
此代码有效:
JFrame frame = new JFrame();
JPanel panel = new JPanel();
frame.setSize(700, 500);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(panel);
frame.setVisible(true);
panel.setLayout(null);
fileContents = new JTextArea();
JScrollPane sp = new JScrollPane(fileContents);
sp.setBounds(175, 75, 300, 300);
panel.add(sp);
您有 2 个问题:
- 如果
fileContents
添加到sp
又添加到panel
,则不需要将fileContents
添加到panel
。 - 使用
JScrollPane
时,您应该仅使用构造器JScrollPane(Component view)
添加Component
,而不是使用add()
方法。