2013-09-24 76 views
0

我想根据面板的大小来设置JTextPane的大小,以便当我添加其他面板时,它会相应地改变。但它只是在中心提供一个小文本窗格,当我添加一些文本时,它的大小会相应变化。如何根据JPanel的大小设置JTextPane的大小?

JPanel panel = new JPanel(); 
JTextPane txt = new JTextPane(); 
JScrollPane pane = new JScrollPane(); 
pane.add(txt); 
panel.add(pane,BorderLayout.CENTER); 
add(pane); 

现在jtextpane就像一个小盒子一样出现在屏幕的中心。我希望它根据面板的尺寸出现

+0

几乎不是一个完整的问题 - 如果我把它放入扩展JFrame并运行它的类中的方法,它会终止而不显示任何东西。我可以将调用添加到pack()和setVisible(),但它仍然不会使面板可见。你在一个未知的类上调用add()。这就是为什么海报经常被要求提供*可执行文件的例子;我们可以将其粘贴到IDE和RUN中,以展示问题所在。当我们处理它时,“根据面板的大小”这个短语让我们猜测一点;你的意思是你想让文字窗格填满面板吗? – arcy

+0

相关[示例](http://stackoverflow.com/a/17510427/1057230) –

回答

4

JPanel默认使用FlowLayout它根据它们的优选尺寸对组件进行尺寸调整。您可以使用BorderLayout这将使用可能的最大面积。

同样使用约束如BorderLayout.CENTER除非容器实际使用BorderLayout,否则不起作用。不要add组件到JScrollPane。这将取代组件视图内的所有组件。相反设置JTextPaneViewPortView,例如

JPanel panel = new JPanel(new BorderLayout()); 
JTextPane txt = new JTextPane(); 
JScrollPane pane = new JScrollPane(txt); 
// pane.add(txt); remove 
panel.add(pane, BorderLayout.CENTER); 

阅读:

+0

这个编辑是否有效:'JPanel panel = new JPanel(new GridLayout());'现在panel正在使用'GridLayout', panel.add(pane,BorderLayout.CENTER);'这里好像使用'BorderLayout'! –

+1

哎呀,太多的斩波和改变,更正 - 谢谢:) – Reimeus

3

您加入pane两次。将panel添加到您的基地(一个JFrame?),并记住实际设置您的JPanel使用BorderLayout

+1

一个错字...我的意思是添加(面板) – UsamaMan

相关问题