我是Java新手,並且有一些關於swing的問題。當用戶通過菜單欄調用時,我需要一個具有一些內部框架的應用程序。我無法訪問java中的對象
import java.awt.Color;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
public class uygulama {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
JFrame frame = new JFrame("uygulama adı");
JDesktopPane desktop = new JDesktopPane();
frame.add(desktop);
menubar mb = new menubar(); //Jmenubar inst.
frame.setJMenuBar(mb);
frame.setBounds(300,100,500,300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
System.out.println(desktop.getTopLevelAncestor());
}
});
}
}
在上面的代碼(偵聽器代碼塊)中;我不能訪問'桌面'對象。如果可以的話,我會使用'desktop.add()'添加一個JInternalFrame。
import java.awt.Desktop;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JInternalFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPopupMenu;
public class menubar extends JMenuBar {
JMenu Dosya;
JMenuItem DosyaItem;
menubar() {
Dosya = new JMenu("Dosya");
DosyaItem = new JMenuItem("Dosya1");
DosyaItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
//desktop. here is the problem
System.out.println();
}
});
Dosya.add(DosyaItem);
add(Dosya);
}
}
'desktop'變量位於匿名內部類中,因此它只能在該範圍內引用。您需要將該變量放在公共可訪問的範圍內。 –