我写了一个基本的挥杆代码,其中我将JTextArea
包裹到JScrollPane
中。但是,即使文本区域内容超出可见JFrame
区域,滚动条也不会显示。
代码如下 -
public class TestArea {
private JTextArea area;
private JScrollPane scroll;
private JFrame frame;
public TestArea(){
frame = new JFrame("Testing");
frame.setSize(new Dimension(200, 300));
area = new JTextArea();
area.setEditable(false);
scroll = new JScrollPane(area);
frame.getContentPane().add(scroll);
area.setLayout(new BoxLayout(area, BoxLayout.Y_AXIS));
area.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
area.setBackground(Color.WHITE);
addMessage();
}
private void addMessage() {
area.add(new JLabel("Can you see me..... can you see me"));
for(int i=0; i<30; i++){
area.add(new JLabel(Integer.toString(i)));
System.out.println(Integer.toString(i));
frame.setVisible(true);
}
}
public static void main(String[] args){
new TestArea();
}
}
使用BoxLayout
的原因是我严格要求输出在y轴上对齐。以下是输出屏幕截图https://app.box.com/s/rgeyajgvk0ppude399my的链接
如您所见,滚动条没有出现。有人可以帮我这个吗?
答案 0 :(得分:3)
JTextArea不能成为JComponents的容器,在这种情况下是JLabel
JTextArea指定为纯文本
答案 1 :(得分:0)
我正在使用JLabel,因为我之间打算以不同的颜色显示字符串
然后你应该使用JTextPane。它支持您添加到文本窗格的每个文本字符串的属性(如粗体,字体,颜色)。
阅读文本组件功能的Swing教程中的部分以获取更多信息和示例。