1

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

JTextField1.getCustomePram() * user input

事前定義された値を持つテキストフィールドが必要です。これは£20*5を乗算するためのものです。したがって、デフォルトのパラメータは20になり、ユーザーは数量を入力し、フォーカスが失われると計算が行われます。

私はNetbeansを使用してGUIを構築していますが、拡張を試みましたJTextFieldが、正直なところ、何をすべきかわからないので、アドバイスがあります。これが完全に間違っている場合は、お知らせください。

4

2 に答える 2

4

事前定義された値を持つテキストフィールドが必要です。これは£20*5を乗算するためのものです。したがって、デフォルトのパラメータは20になり、ユーザーは数量を入力し、フォーカスが失われると計算が行われます。..私がこれについて完全に間違っている場合は、私に知らせてください。

あなたはこれを完全に間違っています。

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

Javaでアイデアを実装する方法を検討する必要があります。

見るのに良い場所は、Swingコンポーネントのビジュアルガイドです。コンポーネントの複雑なグループのレイアウトでそれらを組み合わせます。

于 2012-05-01T20:49:33.243 に答える
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;
    }
}

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

フォーカスに関して:フォーカスを検出するには、:を使用します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.");
    }
}
于 2012-05-01T20:14:23.777 に答える