我一直在試圖調用ExplorerWindow中按下按鈕時在EditorWindow中顯示框架的方法。如何從ExplorerTopComponent將JDesktopPane添加到EditorTopComponent?
有3個模塊:
AppEditorAPI包含該接口
package org.app.AppEditorAPI;
public interface Displayer {
public void Display();
}
AppEditor含有EditorTopComponent
@ServiceProvider(service=Displayer.class)
public final class EditorTopComponent extends TopComponent implements Displayer{
private JDesktopPane jdpDesktop=null;
private int openFrameCount = 0;
...
protected void createFrame() {
MyInternalFrame frame = new MyInternalFrame();
frame.setVisible(true);
jdpDesktop.add(frame);
try {
frame.setSelected(true);
} catch (java.beans.PropertyVetoException e) {
}
}
class MyInternalFrame extends JInternalFrame {
int xPosition = 30, yPosition = 30;
public MyInternalFrame() {
super("IFrame #" + (++openFrameCount), true, // resizable
true, // closable
true, // maximizable
true);// iconifiable
setSize(300, 300);
setLocation(xPosition/openFrameCount, yPosition/openFrameCount);
// Add some content:
add(new JLabel("hello IFrame #" + (openFrameCount)));
}
}
public void Display(){
jdpDesktop = new JDesktopPane();
createFrame(); // Create first window
createFrame(); // Create second window
createFrame(); // Create third window
//Add the JDesktop to the TopComponent
add(jdpDesktop);
}
}
而AppExplorer含有ExplorerTopComponent
public final class ExplorerTopComponent extends TopComponent {
...
private void initComponents() {
B_Display = new javax.swing.JButton();
..
}
private void B_DisplayActionPerformed(java.awt.event.ActionEvent evt) {
Displayer D = Lookup.getDefault().lookup(Displayer.class);
D.Display();
}
...
}
下面是指向項目zip文件的鏈接。
http://dl.free.fr/k2Z6DRLrW
http://www.fileswap.com/dl/lCeFPcUfbg/
做一些測試之後。我發現我無法更改(添加,刪除或編輯)EditorTopComponent的變量或屬性。
就像在這種情況下,這兩條線;
公共無效顯示(){
jdpDesktop = new JDesktopPane();
...
add(jdpDesktop);
}
不被執行,因爲他們應該,這就是爲什麼執行後,該EditorTopComponent .jdpDesktop仍等於null,未添加到EditorTopComponent。
知道我想做什麼,有人可以引導我在正確的軌道上?
發佈相關代碼。 – Robert 2014-09-25 11:27:02
我懷疑這樣工作,但這裏是代碼審查,請求移動(標記您的問題),祝您好運 – mKorbel 2014-09-25 11:27:49
謝謝大家的快速回復。 – ADAM 2014-09-25 11:39:58