Java 由于某些原因,getText无法在JTextField上工作

Java 由于某些原因,getText无法在JTextField上工作,java,swing,jtextfield,gettext,Java,Swing,Jtextfield,Gettext,这是我的密码 它要求我将changeName设置为静态变量。这没有意义,因为我试图捕获用户输入 import java.awt.Color; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt

这是我的密码 它要求我将changeName设置为静态变量。这没有意义,因为我试图捕获用户输入

import java.awt.Color;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.*;
import javax.swing.*;

import CourseProject.General.exitApp;

public class Options extends JPanel{

    private JLabel changeLabel;
    private JTextField changeName;
    private JButton setName;
    private JButton exitButton;

    public Options(){
        GridBagLayout gridbag = new GridBagLayout();
        GridBagConstraints c = new GridBagConstraints();
        c.fill = GridBagConstraints.NORTH;
        setBackground(Color.WHITE);
        super.setLayout(gridbag);
        c.insets = new Insets(10, 10, 10, 10);

        changeLabel = new JLabel("Change Company Name:");
        changeName = new JTextField(10);
        setName = new JButton("Set New Name");
        exitButton = new JButton("Exit");       

        c.gridx = 0;
        c.gridy = 0;
        c.gridwidth = 2;
        add(changeLabel, c);        

        c.gridx = 0;
        c.gridy = 1;    
        add(changeName, c);     

        c.gridx = 0;
        c.gridy = 2;
        c.gridwidth = 1;
        add(setName, c);
        setName.addActionListener(new setNameAction());


        c.gridx = 1;
        c.gridy = 2;    
        add(exitButton, c);
        exitButton.addActionListener(new exitApp());
        exitButton.setSize(40,40);

    }
    static class setNameAction implements ActionListener
    {
        public void actionPerformed(ActionEvent e)
        {
            String str = "";
            str = changeName.getText();
        }
    }

    static class exitApp implements ActionListener
    {
        public void actionPerformed(ActionEvent e)
        {
            System.exit(0);
        }
    }
}
我特别对这部分代码有问题

static class setNameAction implements ActionListener
{
    public void actionPerformed(ActionEvent e)
    {
        String str = "";
        str = changeName.getText();
    }
}

它要求我将changeName设置为静态变量。这没有意义,因为我正在尝试捕获用户输入。

您的内部类被声明为
static

import java.awt.Color;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.*;
import javax.swing.*;

import CourseProject.General.exitApp;

public class Options extends JPanel{

    private JLabel changeLabel;
    private JTextField changeName;
    private JButton setName;
    private JButton exitButton;

    public Options(){
        GridBagLayout gridbag = new GridBagLayout();
        GridBagConstraints c = new GridBagConstraints();
        c.fill = GridBagConstraints.NORTH;
        setBackground(Color.WHITE);
        super.setLayout(gridbag);
        c.insets = new Insets(10, 10, 10, 10);

        changeLabel = new JLabel("Change Company Name:");
        changeName = new JTextField(10);
        setName = new JButton("Set New Name");
        exitButton = new JButton("Exit");       

        c.gridx = 0;
        c.gridy = 0;
        c.gridwidth = 2;
        add(changeLabel, c);        

        c.gridx = 0;
        c.gridy = 1;    
        add(changeName, c);     

        c.gridx = 0;
        c.gridy = 2;
        c.gridwidth = 1;
        add(setName, c);
        setName.addActionListener(new setNameAction());


        c.gridx = 1;
        c.gridy = 2;    
        add(exitButton, c);
        exitButton.addActionListener(new exitApp());
        exitButton.setSize(40,40);

    }
    static class setNameAction implements ActionListener
    {
        public void actionPerformed(ActionEvent e)
        {
            String str = "";
            str = changeName.getText();
        }
    }

    static class exitApp implements ActionListener
    {
        public void actionPerformed(ActionEvent e)
        {
            System.exit(0);
        }
    }
}
static class setNameAction ...
如果希望能够引用外部类的实例字段,请从类声明中删除
静态
引用

否则,您需要将
Options
JTextField
的实例传递给
setNameAction


你可能想通读一遍,这将使人们更容易阅读你的代码,也让你更容易阅读他人

lol这就是我在不知道我在做什么的情况下通过复制和粘贴来抄近路的原因。谢谢@欢迎来到我的世界;)