簡體   English   中英

在另一個類函數中訪問動態組件(即新標簽)?

[英]Access dynamic component (i.e. new Label) in another class function?

我目前正在開發一個 Swing Applet,並且在其他類函數中引用我的自定義 AWT Canvas 組件(非常簡單的擴展類)時遇到問題,例如使用通常使用 Netbean (7.0) 設計器創建的任何其他組件(即按鈕) .

我在這里添加的自定義畫布元素,我確信這是合適的地方(特別是在所有其他生成的組件剛剛在同一區域創建之后)

public void init() {
    try {
        java.awt.EventQueue.invokeAndWait(new Runnable() {
            public void run() {
                initComponents();

                CustomCanvas myCan = new CustomCanvas();
                myCan.setBounds(100, 100, 200, 200);
                getContentPane().add(myCan);
          ...

但是,與生成的組件不同,我無法通過名稱訪問它們,而且似乎也無法通過其他方式 (this.myCan) 訪問它們。 我已經設置了一個示例函數,它將處理 Swing 表單上的(生成的)按鈕來操作先前實例化的 myCan 組件:

private void btnManipCanvasActionPerformed(java.awt.event.ActionEvent evt) {
  //Essentially Was wanting to call something here such as myCan.getGraphics().setRect...
}

你知道在那里訪問 myCan 的方法嗎? 我是否應該將組件的自定義初始化放在不同的區域,以便它們可以公開訪問?

只需將畫布設為實例變量,就像(我猜)Netbeans 設計器創建的所有其他組件一樣:

private CustomCanvas myCan;

public void init() {
try {
    java.awt.EventQueue.invokeAndWait(new Runnable() {
        public void run() {
            initComponents();

            myCan = new CustomCanvas();
            myCan.setBounds(100, 100, 200, 200);
            getContentPane().add(myCan);
            // ...

可能存在問題或缺少繪畫,因為您可能將ATW 組件與 Swing JComponets 混合在一起,

如果 OpenGL 沒有什么特別之處,那么查找JPanel而不是 AWT Canvas,並且所有Swing 中的喘氣都將所有內容重定向到JLabel

請閱讀LayoutManagers如何避免setBounds(int, int, int, int);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM