【发布时间】:2017-06-28 14:06:28
【问题描述】:
所以我正在使用嵌入到 SWT 中的 Swing 组件。
这是我的问题的简化版本,基本上我有两个 Panel 对象 (panelA, panelB) 和一些 Swing 组件,嵌入在我的 Shell 中。我想在panelB 上添加一个on/off 选项,这样做除了我的JTree 来填充整个Shell 而panelB 是off,但是它没有...
我发现的唯一方法是重新创建组件,但我觉得这不是做事的好方法。 (用于关闭我正在使用的组件setVisible())
当panelB关闭时,让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();
}
}
【问题讨论】: