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ファイルからのボタンとテキストエリアのオブジェクトコードは次のとおりです。これは私のクラス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 に答える