小编fun*_*rax的帖子

内部类实例化说明

我不明白内部类 CHameleon 的功能。我不明白第8行理论上意味着什么。

我认为这意味着生成将在内部类外部访问的 JFrame 的重复版本,以便操作预期的 JFrame 对象。

编辑:代码带来空指针异常错误,因为 JFrame 对象从未被引用。解决方案:将JFrame框架修改为最终的JFrame框架。

这就提出了一个问题:如果有多个 JFrame 怎么办?

例如,如果我有一个班级花园,里面有不同的蔬菜,我创建了一个内部班级色板来为这些蔬菜着色。是创建针对特定蔬菜的特定类的唯一解决方案吗?因此,为了回答我自己的问题,在多个 JFrame 的情况下,它们会显示为不同类型的类,我的情况是?

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);
}
Run Code Online (Sandbox Code Playgroud)

java swing instantiation inner-classes

3
推荐指数
1
解决办法
166
查看次数

为什么自引用指针或按钮中的范围超出范围?

我正在尝试使用带有State模式的Swing库生成动态画布.我的代码可以编译,但是当按下按钮时,控制台上会出现红色标记.

问题:我的自引用指针或保留字超出了按钮的范围.我希望能够在没有任何静态的情况下访问该类.

错误:线程"AWT-EventQueue-0"中的异常java.lang.Error:未解决的编译问题:类型State中的方法handlePush(SP)不适用于参数(new ActionListener(){})

这是画布类.

public class SP extends JPanel{
private static final long serialVersionUID = 1L;

private State state = null; 

public static void main(String[] args){
    SwingUtilities.invokeLater(new Runnable(){
        public void run(){
            createAndShowCanvasGUI();
        }
    });
}
public SP(State state ){
    this.state = state;
    init();
}
public SP(){
    this(new BlackState());
}
public static void createAndShowCanvasGUI(){
    JFrame frm = new JFrame("State Pattern");
    frm.setVisible(true);
    frm.setSize(400, 400);
    frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frm.setContentPane(new SP());
}
public void paintComponent(Graphics g){
    super.paintComponent(g);

    g.setColor(state.getColor());
    g.fillRect(0, 0, getWidth(), getHeight());
    repaint(); …
Run Code Online (Sandbox Code Playgroud)

java swing state this self-reference

0
推荐指数
1
解决办法
96
查看次数