我不理解内部类CHameleon的一个功能。我不明白理论中第8行的含义。
我认为它意味着生成JFrame的副本,该副本将在内部类之外访问,以便操作预期的JFrame对象。
编辑:代码会带来空指针异常错误,因为从未引用JFrame对象。 解决方案:将JFrame frame修改为final JFrame frame。
这引出了一个问题,如果有多个JFrames怎么办?
例如,如果我有一个类花园,里面有不同的蔬菜,并且我创建了一个内部类colorsplat来对这些蔬菜进行着色。是创建针对特定蔬菜的特定类的唯一解决方案吗?回答我的问题,在多个JFrames的情况下,它们将显示为不同类型的类,如我的情况?
我认为它意味着生成JFrame的副本,该副本将在内部类之外访问,以便操作预期的JFrame对象。
编辑:代码会带来空指针异常错误,因为从未引用JFrame对象。 解决方案:将JFrame frame修改为final JFrame frame。
这引出了一个问题,如果有多个JFrames怎么办?
例如,如果我有一个类花园,里面有不同的蔬菜,并且我创建了一个内部类colorsplat来对这些蔬菜进行着色。是创建针对特定蔬菜的特定类的唯一解决方案吗?回答我的问题,在多个JFrames的情况下,它们将显示为不同类型的类,如我的情况?
public class LabelsButtonsPanelsandSnakes {
public static void main(String[] args){
final JFrame frame = new JFrame("Test");
JMenuBar menuBar = new JMenuBar(); //menubar
JMenu menu = new JMenu("Menu");
JMenuItem chameleon = new JMenuItem("Change Color");
class CHameleonaction implements ActionListener{ //inside class opens
JFrame frameHolder; //line 8
public void actionPerformed(ActionEvent e)
{
frame.getContentPane().setBackground(new Color(112,253,95));
}
} //inside class ends
chameleon.addActionListener(new CHameleonaction());
menuBar.add(menu);
frame.setJMenuBar(menuBar);
}
frameHolder
变量。这是错误的,并且看起来会导致NullPointerException异常。 - Hovercraft Full Of Eelsframe
变量声明为final
来解决:final JFrame frame = new JFrame("Test");
,然后从ActionListener中引用frame并且删除frameHolder变量。但是无论如何,您的代码设计存在问题。 - Hovercraft Full Of Eels