我工作的RCP应用程序这是从一个Swing版本过渡的内容。所以我们有很多UI组件在这个转换过程中仍然需要在Swing世界中生存。我能够将现有的Swing组件正确放置在AWT-SWT桥接框架中。刷新Eclipse RCP的一部分时,桥变化
我裹在JScrollable窗格中这些Swing组件将其添加到前桥,这样我就不必调整含部分当摆动UI元素的大小而改变。在那里,我把一个旧的Swing组件中的一部分的代码如下所示:
@PostConstruct
public void postConstruct(final Composite parent) {
/* Create embedding composite */
final Frame bridgeFrame;
final Composite embed;
embed = new Composite(parent, SWT.EMBEDDED);
embed.setLayout(new FillLayout());
bridgeFrame = SWT_AWT.new_Frame(embed);
bridgeFrame.setLayout(new BorderLayout());
bridgeFrame.add(
new JScrollPane(getTestPanel()),
BorderLayout.CENTER);
}
我的Swing组件具有这样当用户点击一个按钮的行为,那是隐藏在组件东西变得可见,或新UI元素被添加到Swing组件。例如:
private JPanel getTestPanel() {
final JPanel output;
final JButton eastBttn, westBttn;
output = new JPanel();
eastBttn = new JButton("East Button");
westBttn = new JButton("West Button");
output.setLayout(new BorderLayout());
output.add(eastBttn, BorderLayout.EAST);
output.add(westBttn, BorderLayout.WEST);
eastBttn.addActionListener(evt -> {
System.out.println("East Button Clicked");
output.add(new JLabel("East Button Clicked"), BorderLayout.CENTER);
});
return output;
}
我的问题是,当Swing组件中的元素发生变化时,父桥帧无法正确呈现。
我点击EastButton
后,它应该在桥架的中心添加一个文本标签。但是,在应用程序视图中没有任何更改。
我能做些什么,使含桥梁帧更新部分自动更新?
为了检验这是否是桥车架上的重画的问题,我有可能会触发桥车架的repaint
/revalidate
/pack
一个菜单项,但这并没有解决问题。我怀疑它是与含有部分的渲染,但不知道如何去解决它。
在猜测(因为我不使用桥)尝试'embed.layout(真,真)' –
@格雷格-449的感谢!不幸的是,这并没有起作用(或任何“布局”,“重绘”等变体)。 – anishthecoder