gpt4 book ai didi

java - 如何从 Action 监听器/类构造函数访问变量以在 java 的 main 方法中使用

转载 作者:行者123 更新时间:2023-12-01 19:14:19 24 4
gpt4 key购买 nike

我有一个带有显示不同形状的组合框和一个按钮的框架,对于该按钮,我添加了一个 Action 监听器,它将从组合框中获取所选项目并将其存储为我声明为公共(public)类的字符串变量,在我的主要方法中,我想访问这个字符串以使芬奇机器人绘制该形状,但无论我尝试什么,我似乎都无法访问它

public class DrawShape 
{
private JFrame frame;
private String[] choices = {"circle", "square", "triangle", "rectangle", "quit"};
public String choice = "";

//class constructor
public DrawShape()
{
frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);

JPanel p = new JPanel();
final JComboBox cb = new JComboBox(choices);
JButton button = new JButton("Done");

p.add(cb);
p.add(button);
frame.add(p);

//create an action listener that, when button is clicked, gets the selected choice and stores it to
//the string variable 'choice'
button.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
choice = (String)cb.getSelectedItem();
}
}) ;

frame.pack();


}
public static void main(String[] args)
{
new DrawShape();
System.out.println(choice);
}
}

最佳答案

我不建议使用非私有(private)变量。但是,您需要保留对您创建的对象的引用,然后通过该引用访问字段,就像调用对象上的方法一样。

    DrawShape draw = new DrawShape();
System.out.println(draw.choice);

但是,您应该看到 null,因为这是在构造对象之后立即调用的,而不是从监听器调用的。

您可能希望从监听器执行代码。因此,要么将打印代码放入监听器中,要么让监听器使用该代码调用另一个方法。

GUI 编程往往是事件驱动的。不要期望能够对用户交互进行排序 - 用户驱动。

关于java - 如何从 Action 监听器/类构造函数访问变量以在 java 的 main 方法中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59436043/

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