[英]How to access variable from another class directly(i.e. without using class name or object)?
[英]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.