Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将名称传递给操作_Java_Swing_User Interface_Awt - Fatal编程技术网

Java 将名称传递给操作

Java 将名称传递给操作,java,swing,user-interface,awt,Java,Swing,User Interface,Awt,我对编码是新手,我正在尽我最大的努力,但我正在尝试让gui提交一个名称,然后有一个弹出窗口说“你的名字是:”我知道我遗漏了一些明显的东西,所以请对我宽容一些 public class Frame1 extends JFrame { private JPanel panel; private JTextField NametextField; public Frame1() { setTitle("Confirm Name"); getCo

我对编码是新手,我正在尽我最大的努力,但我正在尝试让gui提交一个名称,然后有一个弹出窗口说“你的名字是:”我知道我遗漏了一些明显的东西,所以请对我宽容一些

public class Frame1 extends JFrame {
    private JPanel panel;
    private JTextField NametextField;

    public Frame1() {
        setTitle("Confirm Name");
        getContentPane().setLayout(null);
        JLabel lblEnterName = new JLabel("Enter Name:");
        lblEnterName.setBounds(10, 22, 83, 14);
        getContentPane().add(lblEnterName);
        NametextField = new JTextField();
        NametextField.setBounds(10, 47, 274, 20);
        getContentPane().add(NametextField);
        NametextField.setColumns(10);
        JButton btnNewButton = new JButton("Submit");
        btnNewButton.addActionListener(new Frame2());
        panel = new JPanel();
        add(panel);
        setVisible(true);
        btnNewButton.setBounds(20, 78, 89, 23);
        getContentPane().add(btnNewButton);
    }

    private class Frame2 implements ActionListener {
        public void actionPerformed(ActionEvent e) {
            String actionCommand = e.getActionCommand();
            if (actionCommand.contains(getName())); {
                JOptionPane.showInputDialog("Your name is: " + NametextField );
            }
        }

    public static void main(String[] args) {
    }
您基本上是说“您的名字就是这个文本字段对象”。您需要使用文本字段的
getText()
方法来获取实际文本

NametextField.getText()

  • 注意,
    if(actionCommand.contains(getName())
    在我看来非常可疑。我不确定这是否是您想要的,尽管我不知道
    getName()
    返回什么。我想你要检查动作命令是否等于你要检查的按钮的动作命令。在这种情况下,您需要
    if(“Submit.equals(actionCommand))

  • 另外请注意,正如@Takendarkk所指出的,括号后的
    否定了
    if
    语句,导致执行操作,无论if语句是否为true

  • 另请注意,正如@MadProgrammer所指出的,远离空布局。学习使用布局管理器,让它们为您调整大小和定位。请参阅

  • 另外请注意,您应该遵循Java命名约定。变量名以小写字母开头,使用驼峰式大小写:
    NametextField
    → <代码>名称文本字段


你的
main()
什么也不做。把
new Frame1();
放在那里,如果你没有任何bug,你就会看到结果。你的getName()定义在哪里?你写了太多代码只是为了做你想做的事。我看到
if(actionCommand.contains(getName());{
请注意,右边的分号可能不是您想要的。“我知道我遗漏了一些明显的内容”
getContentPane().setLayout(null)
将是一个开始。不要使用
null
布局。像素完美的布局在现代UI设计中是一种错觉,您无法控制字体、DPI、渲染管道或其他因素,这些因素将改变组件在屏幕上的渲染方式。Swing旨在与布局管理器一起解决这些问题。如果你坚持忽略这些特性而违背API设计,那么就要准备好面对很多麻烦和永无止境的艰苦工作……谢谢你的帮助!
NametextField.getText()