您的位置:首页 > 其它

给 JTextArea 加滚动条

2016-07-27 17:27 447 查看

首先,把JTextArea 放到 JScrollPane里

JTextArea textArea = new JTextArea();
textArea.setText("aaa");
JScrollPane scrollPane = new JScrollPane(textArea);


接下来JScrollPane的对象往哪放,怎么放,是有讲究的

问题:JFrame 与 JPanel 是有区别的

往JFrame里添加控件时,JFrame.getContentPane().add(),此时添加button、textArea这样的控件是没问题的,但是不能添加JPanel类型的对象,所以JFrame不能直接添加JScrlllPane对象。JPanel.add() 既可以添加button、textArea这样的控件,又可以添加JPanel对象。

解决方法

通过JFrame.setContentPane()方法把JFrame的contentPane设为JPanel,即JFrame.setContentPane(new JPanel()),这样,JFrame.getContentPane().add()就可以跟JPanel一样,想添加什么就添加什么。

完整代码示例:

import javax.swing.*;

public class ScrollTest extends JFrame {
private JButton button;
private JTextArea textArea;
private JFrame frame;

public static void main(String[] args) {
ScrollTest inst = new ScrollTest();
JFrame frame1 = inst.getFrame();
frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame1.setVisible(true);

inst.textArea.setText("中华人民共和国\n唐宋元明清\n");
}

private JFrame getFrame() {
if(frame == null) {
frame = new JFrame();
frame.setSize(1000, 800);
frame.setContentPane(new JPanel());    //没有这句,下面.add(getScrollPane)将显示不出来
//frame.setLayout(null);
frame.getContentPane().setLayout(null);
frame.getContentPane().add(getButton());
frame.getContentPane().add(getScrollPane());
}
return frame;
}

private JScrollPane getScrollPane() {
if(textArea == null) {
textArea = new JTextArea();
textArea.setText("affsdgggdsgds");
}
JScrollPane scrollPane = new JScrollPane(textArea);
scrollPane.setBounds(50,250,200,100);
return scrollPane;
}

private JButton getButton() {
if(button == null) {
button = new JButton();
button.setText("testButton");
button.setBounds(10,10, 200, 30);
}
return button;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: