首先,把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;
}
}
1万+

被折叠的 条评论
为什么被折叠?



