我正在努力使用 java GUI - 提前感谢您的帮助!我有一个 JFrame,其中有几个组件:按钮(J 按钮)触发动作侦听器,comp这是我试图替换的一个组件JScrollPane其中有一个组件(组件的类型无关紧要,可以是文本字段、表格或任何东西)。
我想触发一个操作 - 删除组件,将新组件放置在与已删除组件相同的位置,然后重新绘制窗口(我使用它来显示不同类型的文本字段和 JTable)。这就是我所拥有的:
JScrollPane sp = new JScrollPane(comp);
this.add(sp, BorderLayout.CENTER);
//this works so far - first time I display this is ok!
private void replace() {
comp = new Component(...); //name and type of the components is not important
sp = new JSCrollPane(comp);
this.remove(sp); //remove old component
add(sp, BorderLayout.CENTER);
repaint();
revalidate();
}
为什么功能不能取代工作?它不做任何事情(它改变了逻辑中的组件,因此如果我访问 comp 的内容,它会被刷新,但它仍然显示旧的)。
我写的有点象征性,因为我的代码很长...感谢您的帮助!
编辑:忘记了我的代码中的一行..
您不必像以前那样尝试删除滚动窗格。
要更改滚动窗格显示的组件,只需进行以下调用:
sp.setViewportView(new Component(...));
调用之后,旧组件将从视图中删除并由新组件替换。
所以你的代码应该看起来像这样:
JScrollPane sp = new JScrollPane(comp);
this.add(sp, BorderLayout.CENTER);
private void replace() {
comp = new Component(...); //name and type of the components is not important
sp.setViewportView(comp);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)