因此,我正在將Swing組件嵌入到SWT中。JTree不會自動擴展,Swing嵌入到SWT中
這裏是我的問題的簡化版本,基本上我有兩個面板對象(panelA, panelB
)與一些Swing組件嵌入在我的Shell中。我想補充的開/關選項的在panelB
,這樣做,我做了,除了我的JTree填寫整個外殼,而panelB
是關閉,但事與願違......
的唯一途徑我發現正在重新創建組件,但我覺得這不是做事情的好方法。 (用於將關閉我使用的組件setVisible()
) 當panelB爲off時,使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();
}
}
由於它很好地擴展,但我應該怎麼添加到** **隱藏按鈕? 在我正在處理的應用程序上,我將有一個外部按鈕,它將**開/關**'buttonB',以便JTree組件可以填充整個空間。 –
如果您在buttonB上隱藏/設置可見(false),您如何再次打開它,然後按下隱形按鈕?你可以顯示你正在談論的代碼嗎? – SomeDude
也許你可以有一個複選框,而不是一個按鈕。檢查之後,展開樹狀結構,退出時摺疊樹 – SomeDude