2012-05-01 9 views
1

私はSwing GUIを作成していますが、私は一連のJTextFieldを使用しています。私はテキストフィールドにカスタムプロパティを追加できるようにしたい。これは、たとえば、フォーカスが失われたときに計算を完了するために使用されます。カスタムコンポーネント

JTextField1.getCustomePram() * user input 

私は事前に定義された値を持つことになりますテキストフィールドが、それはので、デフォルトのparamは20になり、ユーザが数量を置く£20 * 5を掛けるためのもので、焦点の損失にしたいです計算が行われます。

NetBeansを使用してGUIを構築していますが、JTextFieldを拡張しようとしましたが、正直言って何をすべきかわかりません。

+1

は、プロパティの種類と理由は何かを追加する理由 – mKorbel

+0

私は、定義済みの値を持つテキストフィールドを欲しい、それは£20 * 5を乗算するためです。したがって、デフォルトのパラメータは20になり、フォーカスを失うと、計算が実行されます。 WCharginはフォーカスの質問に答えましたが、今すぐカスタムパラメータで少しの助けが必要です。 – user1368528

+0

[答えを受け入れることを忘れない](http://meta.stackexchange.com/a/65088/164879) – mKorbel

答えて

4

私は事前に定義された値を持つことになりますテキストフィールドをしたい、それはとてもデフォルトのparam意志を£20 * 5を掛けるためのものです20とし、ユーザが数量を入力し、焦点を失うと計算が行われます。私がこれについて完全に間違っていると私に知らせてください。

これは完全に間違っています。

このため、単価(£20)に無効なテキストフィールドまたはラベルを使用し、数量(5)にはJSpinnerを使用することがあります。フォーカスが失われた計算をadd a change listenerにする代わりに、注文した商品の新しい小計(および該当する場合は合計)を「リアルタイム」に、つまり数量が変更されたときに表示します。

Javaでアイデアを実装する必要があるかどうかを調べる必要があります。

よく見ると、Visual Guide to Swing Componentsです。複雑なコンポーネントグループのレイアウトでそれらを結合します。

+2

私はそれ以上+1を与えることができました。JTextFieldを拡張して奇妙なことをするのに大変な作業をするのを助ける代わりに、適切なUIを備えたまともなソリューションを提供してください。私は好きです。 – Robin

+0

あなたの助けてくれてありがとう、私はこれをどうやってやるのか考え直すつもりです。私はJavaを初めて使い、PHPの背景から来ています。 Javaでアイデアを実装する必要があるかどうかを調べる必要があります。 – user1368528

+0

第3リンクの編集もご覧ください。私はあなたにもっと良いアプローチに話すことができてうれしい、あなたのユーザーはあなたに感謝します。 :) –

4

user1329572によれば、JTextFieldをサブクラス化(または)する必要があります。次のようにあなたはこれを行うことができます。

public class MyTextField extends javax.swing.JTextField { 
    private String /* or whatever type */ myCustomParam; 

    public String getCustomParam() { 
     return myCustomParam; 
    } 

    public void setCustomParam(String param) { 
     myCustomParam = param; 
    } 
} 

どこでも、あなたはまた、MyTextFieldを使用することができますJTextFieldを、使用する必要があります。他のすべての機能は引き続き機能します。

フォーカスについて:FocusAdapterを使用し、フォーカスを検出する:

MyTextField mtf = new MyTextField(); 
mtf.addFocusListener(new java.awt.event.FocusAdapter() { 
    @Override 
    public void focusLost(java.awt.event.FocusEvent e) { 
     System.out.println("I lost focus."); 
    } 
} 
+0

help user1329572とWCharginに感謝します。 このカスタムパラメータは、netbeansのプロパティメニューから設定できますか?生成されるコードを見ると、その値を設定する方法がないようですから? – user1368528

+0

値を設定する場合は、コード 'setCustomParam(value)'を入力します。ここで、valueは設定する値です。 – wchargin

関連する問題