うーーん。
double numx=Double.parseDouble(transXget.getText().toString());
で大丈夫だと思うのですが、どんな感じでいけないのでしょうか?
一つ加えておきますと、JTextfieldは1文字変化させるごとに「insertUpdate(DocumentEvent e)」を呼び出すようです。つまり、「-」と書いた瞬間にこのメソッドが呼び出されるので、
double numx=Double.parseDouble("-");
を実行しようとします。"-"は当然数字ではないのでNumberFormatExceptionが発生しますね。"3"と先に書いた後で"3"の前に"-"を書くと"-3"と認識するので"-3.0"と出力されます。
最初に"-"を書きたいときにはtry-catchすればよいでしょう。以下に参考プログラムを載せます。
import javax.swing.*;
import javax.swing.event.*;
class TransXListener extends JFrame implements DocumentListener{
JTextField transXget;
static public void main(String args[])
{
TransXListener txl=new TransXListener();
}
TransXListener()
{
transXget= new JTextField();
transXget.getDocument().addDocumentListener(this);
this.getContentPane().add(transXget);
pack();
setVisible(true);
}
public void insertUpdate(DocumentEvent e) {
try
{
double numx=Double.parseDouble(transXget.getText().toString());
System.out.println(numx);
}
catch(NumberFormatException nfe)
{
}
}
public void removeUpdate(DocumentEvent e) {
}
public void changedUpdate(DocumentEvent e) {
}
}
私の環境下ではこれでOKでしたが、いかがですか?
お礼
回答ありがとうございます。 ばっちりうまくいきました。 エラー処理をきちんとすればよかったんですね。 勉強になりました。