gpt4 book ai didi

java - 访问匿名类中的封闭类

转载 作者:行者123 更新时间:2023-12-02 06:01:56 25 4
gpt4 key购买 nike

假设我有这样的java代码

import javax.swing.*;
import java.awt.event.*;
import java.awt.*;

class GUIExercise {
private static void createAndShowGUI () {
JFrame frame = new JFrame("My Demo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

JPanel center = new JPanel();
center.setLayout(new BoxLayout(center, BoxLayout.Y_AXIS));

JLabel label = new JLabel("Migz");
label.setHorizontalAlignment(JLabel.CENTER);
label.setFont(label.getFont().deriveFont(Font.ITALIC | Font.BOLD));

center.add(label);
JButton btn = new JButton("Click me");
btn.addActionListener(new ActionListener(){
@Override
public void actionPerformed (ActionEvent e) {
JOptionPane.showMessageDialog(GUIExercise.this, "Font.ITALIC is " + Font.ITALIC + " and Font.BOLD is " + Font.BOLD + " finally Font.ITALIC | Font.BOLD is " + (Font.ITALIC | Font.BOLD), "Ni Hao", JOptionPane.INFORMATION_MESSAGE);
}
});
center.add(btn);

frame.getContentPane().add(center, BorderLayout.CENTER);
frame.pack();
frame.setSize(frame.getWidth() + 100, frame.getHeight() + 50);
frame.setVisible(true);
}

public static void main (String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run () {
createAndShowGUI();
}
});
}
}

将 GUIExercise.this 放在 showmessagedialog 的第一个参数中将导致错误:非静态变量 this 无法从静态上下文中引用。必须做什么?或者我如何访问 EnclosureClass?

最佳答案

您似乎正在尝试在 static 中使用该代码方法。您无法从 static 访问封闭实例上下文,因为没有实例。

<小时/>

这不是问题。问题是您试图直接在类的主体中执行该方法。你不能那样做。您必须将其放入一个方法中,可能是您要作为 ActionListener 的一部分重写的方法。界面。

btn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(EnclosingClass.this, "Hello");
}
});

<罢工>

(假设 EnclosingClassComponent 。)

关于java - 访问匿名类中的封闭类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22599581/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com