所以我正在使用嵌入到 SWT 中的 Swing 组件。
这是我的问题的简化版本,基本上我有两个 Panel 对象(panelA, panelB
)和一些 Swing 组件,嵌入在我的 Shell 中。我想在 上添加一个开/关选项,除了我的 JTree 之外,我这样做是 为了在关闭panelB
时填写整个 Shell ,但它没有......panelB
我发现的唯一方法是重新创建组件,但我觉得这不是做事的好方法。(为了推迟我正在使用的组件)当 panelB关闭setVisible()
时,让 JTree 组件填充空间的任何想法?
import javax.swing.*;
import org.eclipse.swt.SWT;
import org.eclipse.swt.awt.SWT_AWT;
import org.eclipse.swt.layout.*;
import org.eclipse.swt.widgets.*;
public class testCW {
public static void main(String[] args) {
Display display = new Display();
Shell shell = new Shell(display);
shell.setText("Test");
shell.setLayout(new FillLayout());
Composite compositeA = new Composite(shell,SWT.EMBEDDED);
java.awt.Frame frameA = SWT_AWT.new_Frame(compositeA);
java.awt.Panel panelA = new java.awt.Panel(new java.awt.BorderLayout());
frameA.add(panelA);
JScrollPane scrollPaneA = new JScrollPane(new JTree());
panelA.add(scrollPaneA);
Composite compositeB = new Composite(shell,SWT.EMBEDDED);
java.awt.Frame frameB = SWT_AWT.new_Frame(compositeB);
java.awt.Panel panelB = new java.awt.Panel(new java.awt.BorderLayout());
frameB.add(panelB);
JButton buttonB = new JButton("Button");
panelB.add(buttonB);
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
// test 1 : hide panelB or compositeB? -> run -> JTree extends well?
// test 2 : hide panelB or compositeB? -> print panelB(compositeB)
// -> run -> displays well ?
// panelB.setVisible(false);
// compositeB.dispose(); //TEST
}
display.dispose();
}
}