2012-07-10 24 views
21

最近Java JTextFieldで奇妙な問題が発生しました。次のコードを実行すると(下記参照)、テキストフィールドに "0"を入力すると、まずペーストアクションが送信され、次に「0」が入力されます。たとえば、 "text"をクリップボードにコピーすると、 "0"を入力すると "text0"と入力されます。同様に、「4」と入力すると前の文字が「4」に置き換えられます(これは削除アクションであり、「4」が入力されたと思います)。 "7"と入力すると、テキストフィールドがクリアされます。ここでJTextField with Numpad

はコードです:

import javax.swing.JFrame; 
import javax.swing.JTextField; 

public class Main { 

public static void main(String[] args) { 
    JFrame frame = new JFrame(); 
    JTextField text = new JTextField(); 
    frame.add(text); 
    frame.setSize(500, 500); 
    frame.setVisible(true); 
} 

} 

問題は、Red Hat Linuxの(Windows XPからVNCを使用してアクセス)で発生しています。すべてがWindow XP上で期待どおりに実行されます。

更新:Ubuntuのプログラムにも問題はありません。私はまた、別のキーボードとVNCビューアを使ってみました。

アップデート2:Red HatのためのJavaバージョン

:XPの場合

java version "1.6.0_17" 
    OpenJDK Runtime Environment (IcedTea6 1.7.7) (rhel-1.17.b17.el5-x86_64) 
    OpenJDK 64-Bit Server VM (build 14.0-b16, mixed mode) 

java version "1.7.0_05" 
    Java(TM) SE Runtime Environment (build 1.7.0_05-b05) 
    Java HotSpot(TM) Client VM (build 23.1-b03, mixed mode, sharing) 

アップデート3は:三つの異なるRed Hatの上でプログラムを実行しようとしましたマシン(すべて同じグループの仕事場)にインストールし、さらに別のXP coコンピュータを再起動します。

更新4:今日私は、問題が魔法のように消え去ったことを見つけるために仕事に着きました。しかし、なぜ私は(そしてこの奇妙な問題に遭遇する他の誰かが)将来それを修正する方法を知っているように、それが最初に起こったを知ってうれしいです。

+0

奇妙な...それはキーボードマッピングの問題かもしれないように聞こえますか?愚か私は知っているが、あなたは数字パッドのロックがオンであり、他のレッドハットのアプリケーションで期待どおりに動作することを確認しましたか? – bcr

+0

ナンプラロックがオンになっていて、他のプログラムを入力するときにすべて正常に機能します。私はまた別のキーボードを使用してみました - 運がありません。 – lrAndroid

+0

ここに見つかったもの:http://www.rvdavid.net/how-to-get-the-use-of-your-number-pad-back-in-ubuntu/ もちろん、Ubuntuだけどあなたの場合と同様の何か? – vaisakh

答えて

-2

「端末、機能」の下の「アプリケーションキーパッドモードを無効にする」を確認してください。

+0

パテでこれを行うことを意味すると思いますか?運がない。 – lrAndroid

+0

「端末、機能」?あなたは何について話していますか? – WhyNotHugo

0

これはVNCの既知の問題のようです。公式のVNCウェブサイトによると:

Num Lockキーが同期していない可能性があります。切断し、クライアントコンピュータのNum Lockキーを1回押してから、再接続します。

出典:http://www.realvnc.com/products/viewerplus/known-issues/

これもVNCのFAQに現れる:

Q.キーボードが動作しない/キーは奇妙なことを行います!

これを引き起こす可能性のある共通の問題が1つあります。 Shiftキー、Ctrlキー、またはAltキーなどの修飾キーが押され、ビューアウィンドウがフォーカスを失ったり消えたりすると、「キーリリース」メッセージはビューアには届かず、リモートサーバーに到達しません。リモートマシンは、MがCtrl-Mなどであると考えます。我々は、このような事態を防ぐためにさまざまなことを行ってきました。たとえば、フォーカスを失ったときに自動的にさまざまな修飾子がリリースされますが、それでも発生する可能性があり、そのときに混乱する可能性があります。解決策は簡単です:単に押された修飾キーを押して離します。それが何であるかわからない場合は、一度に1つずつ試してみてください。

出典:http://www-hep.nhn.ou.edu/d0/software/vnc-3.3.2r2/faq.html

この情報はあなたの問題を示している場合、それは問題では「魔法の消えた、」いつのNumパッドはその日にVNCと同期して、単純だったの外にいる可能性があり他の人と同期してください(もちろん、問題が再び発生する可能性があります)。

+0

なぜ、この問題はJavaプログラム(Eclipse経由で作成)内でのみ発生しますが、他のプログラム内では発生しませんか?また、問題はキーボード全体ではなく、数字キーでのみ発生します。さらに、どの修飾キーでも、ペダルの "0"キーがペーストされることがありますか? – lrAndroid

+0

Num Padを他のアプリケーション(Red HatのVNC経由)で使用すると、Javaプログラムで誤動作していると同時に正常に動作しますか? – asteri

+0

正しい。問題は私のJavaプログラム内で起きているように見えました。 – lrAndroid

1

このコードをプログラムの先頭に配置してください。

1

なぜ正確な答えを出すのは難しいですが、それは本当に奇妙な現象ではありません。通常、VNCまたはリモートデスクトップの共有が行われると、あるマシンのキーボードおよびマウスイベントが他のマシンに送信されます。このマッピングが完了すると、特にクリップボードのコピー、貼り付けで誤った動作が発生する可能性があります。これは、Linuxの世界だけでなく、Windowsの世界でも起こります。

私はこれを自分の経験で伝えます。私の職場では、多くの場合、他のマシンや、XPを実行しているマシン、Windows 7を稼動させているマシンにrdcします。あるマシンでクリップボードをコピーし、リモートマシンでペーストするアクションは、

Javaおよびリモートデスクトップアクセスでこのような経験をもう一度引用すると、私は自分のEclipse上で実行しているJavaアプリケーションを持っています。他のマシンのマシンから私のマシンにrdcすると、Eclipseが完全にそのアプリケーションを起動できないことがわかります。それがうまくいくためには、まず自分のシステムで起動し、アプリケーションを実行してから、rdcを他のマシンから私のものにしておく必要があります。

Windows XPとWindows 7が同じファミリに属していることが判明した場合、これを想像してみてください。 VNCと一緒にLinuxとWindowsを使用しているときにそのような不具合が起きないことを願っているだけです。:)

このように、なぜそれが起こっているのかについてはあまり正確ではありませんが、確かにこれはまったくOSからOSレベルで起こり、スイングフレームワークレベルでは起こりません。

1

私はわからないんだけど、私はただ助けるための試みに答えるよ:のIcedTeaと

私の経験は悪いです。私は何が起こったのか正確には思い出せませんが、当時は正式なJava JREをインストールすることで私の問題は解決しました。 Id est:Oracleが提供するJRE

http://java.com/en/download/index.jsp