0

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

actionlistener代码:

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 文件的 Button 和 textarea 对象代码,这是我的类AddInventory

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

伙计们,你可以试试这个代码,并告诉我它是否在你的电脑上工作。因为我打算做的是将此文本区域值保存到我的数据库中。

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

4

1 回答 1

1

我会从检查的目的开始

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);
            }   
        }
    }
}
于 2012-08-31T05:42:01.080 回答