请教:如何刷新JLabel的值、SplitPane分隔比例的初始化——两个问题。
nt941 2003-08-19 04:27:57 问题一:如何刷新JLabel等控件的值
例:用一个String初始化一个JLabel,然后把此JLabel放入一个JPanel,再把该JPanel放进一个JFrame,然后改变了这个String的值,可是运行后显示的JLabel还是改变前的名称。请问如何才能使改变发挥作用?
请参考下面的代码。
public class Frame1 extends JFrame {
String str = "old"; //改变的就是它的值!
public Frame1() {
JLabel label = new JLabel(str);
JPanel panel = new JPanel();
panel.add(label);
this.getContentPane().add(panel);
str = "new"; //改变了!下面应该增加什么代码,以使改变显示出来?
…… //????
}
public static void main(String[] args) {
Frame1 frame1 = new Frame1();
frame1.setSize(500,400);
frame1.setVisible(true);
}
}
问题二:文字多点,其实问题超级简单,请耐心看。
在一个左右分隔的JSplitPane1的左半又增加了一个上下分隔的JSplitPane2,在JSplitPane2中的上下部分分别加入了一个JScrollPane,每个JScrollPane中有一棵JTree 。出现的问题是,每次运行的时候初始显示的JSplitPane2的中间的分隔条(Divider)都非常宽(大约有三厘米宽),且居于整个JSplitPane2的顶部,致使JSplitPane2上半部中的JTree几乎显示不出来,但用鼠标把分隔条往下稍微拖动一下以后它就正常了,变成了正常的宽度。
我企图用jSplitPane2.setDividerLocation(0.5);来设置JSplitPane2的分隔条的初始位置,多次调整括号中的值都没有效果。
参考下面代码:
jSplitPane2.setOrientation(JSplitPane.VERTICAL_SPLIT);
jSplitPane2.add(new JScrollPane(tree1),jSplitPane2.TOP);
jSplitPane2.add(new JScrollPane(tree2),jSplitPane2.BOTTOM);
jSplitPane2.setDividerLocation(0.5);//为何不起作用????
jSplitPane1.add(jSplitPane2,jSplitPane1.LEFT);