Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.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 getText JTextField_Java_Swing_Actionlistener_Jtextarea - Fatal编程技术网

Java getText JTextField

Java getText JTextField,java,swing,actionlistener,jtextarea,Java,Swing,Actionlistener,Jtextarea,我知道这很容易,但我现在已经做了2个小时了,我似乎不明白为什么我不能将JTextArea值从一个变量传递到其他java文件,因为我将ActionEvent代码从我的对象分离到另一个文件(特别是JTextArea),伙计们找出我的密码出了什么问题 actionlistenercode: public class ButtonAction{ public static class AddInv implements ActionListener{ public void action

我知道这很容易,但我现在已经做了2个小时了,我似乎不明白为什么我不能将
JTextArea
值从一个变量传递到其他java文件,因为我将
ActionEvent
代码从我的对象分离到另一个文件(特别是
JTextArea
),伙计们找出我的密码出了什么问题

actionlistener
code:

public class ButtonAction{
    public static class AddInv implements ActionListener{
    public void actionPerformed(ActionEvent e){
        AbstractButton inv = (AbstractButton)e.getSource();
        AddInventory addInv = new AddInventory();

        if(inv.getActionCommand().equals("SAVE")){
            invName = addInv.areaName.getText();                
            JOptionPane.showMessageDialog(null, invName);
        }   
    }
}
}
这是另一个java文件中的我的按钮和文本区域对象代码,这是我的类
AddInventory

ActionListener add = new ButtonAction.AddInv();
areaName = new JTextArea(2, 35);
//my TextArea
JButton buttonSave = new JButton("SAVE");
buttonSave.addActionListener(add);
伙计们,你们可以试试这个代码,告诉我它是否在你们的电脑里工作吗。 因为我计划做的是将这个文本区域值保存到我的数据库中


我已经连接了oracle数据库,我只需要插入一些记录。

我首先要检查

addInv = new AddInventory();
s1 = addInv.areaName.getText();
对我来说,这意味着,为我创建一个新的
AddInventory
,并给我它的
areaName
文本字段的默认值…这可能什么都不是

更新

还是一样的问题

AddInventory addInv = new AddInventory();

if(inv.getActionCommand().equals("SAVE")){
    invName = addInv.areaName.getText();                
    JOptionPane.showMessageDialog(null, invName);
}   
如何,您需要将对文本区域的引用传递给操作

更新示例

理想情况下,您需要某种控制器/模型来处理此问题,但作为示例

areaName = new JTextArea(2, 35);
ActionListener add = new ButtonAction.AddInv(areaName);
//my TextArea
JButton buttonSave = new JButton("SAVE");
buttonSave.addActionListener(add);
你的动作课

public class ButtonAction{
    public static class AddInv implements ActionListener{
        private JTextArea text;
        public AddInv(JTextArea text) {
            this.text = text;
        }
        public void actionPerformed(ActionEvent e){
            AbstractButton inv = (AbstractButton)e.getSource();

            if(inv.getActionCommand().equals("SAVE")){
                invName = text.getText();                
                JOptionPane.showMessageDialog(null, invName);
            }   
        }
    }
}

等等,对不起,它应该被删除,等等,我只是编辑代码。invName是一个字符串,所以我只是将JtextArea值传递给字符串invName,但当JOptionPane显示其中没有任何内容时,它是空的。我的意思是,用户应该或将要输入,一旦单击按钮,它应该传递给变量,为什么传递空值,据我所知,一旦用户单击按钮,它将有一个值,因此它将不是空值。您有一个引用问题。您试图从中获取值的
AddInventory
实例与用户用于输入数据的实例不同…因此,您获取值的原因是
null
或空…好的,现在我明白了,如果无法引用该值,如何获取该值?“告诉我它是否在您的计算机中工作”那些代码片段不能在我的计算机中编译。发表一篇“tnx伙计们”的帖子,让问题更容易阅读,可以更好地表达你们的感谢。当一个问题包含像“tnx”这样的短信式缩写词时,它就更难理解了。将来,请正确拼写单词。@AndrewThompson啊,我完蛋了,我是个程序员,我不会拼写;)(这一点是正确的,只是忍不住)谢谢你的提醒,我会记住这一点。@Mad“我完蛋了,我是个程序员,我不会拼写”我很幸运,我生活在第三个千年,我不会拼写-我有一个拼写检查器帮我做这件事