1

我正在创建一个 Swing GUI,我正在使用一系列JTextField. 我希望能够向文本字段添加自定义属性。例如,这将用于在失去焦点时完成计算。

JTextField1.getCustomePram() * user input

我想要一个具有预定义值的文本字段,它用于乘以 £20 * 5。因此默认参数将为 20,用户将输入数量,并且在失去焦点时将完成计算。

我正在使用 Netbeans 构建 GUI,我尝试过扩展JTextField但老实说我不知道​​该怎么做,任何建议或者如果我完全错误,请告诉我。

4

2 回答 2

4

我想要一个具有预定义值的文本字段,它用于乘以 £20 * 5。因此默认参数将为 20,用户将输入数量,并且在失去焦点时将完成计算。..如果我完全错了,请告诉我。

你这样做是完全错误的。

为此,我可能会使用禁用的文本字段或标签作为单价(20 英镑),使用 aJSpinner作为数量(5)。与其对焦点丢失进行计算,不如添加一个更改侦听器并“实时”向用户显示订购项目的新小计(如果相关,则为总计) - 当数量发生变化时。

需要看看我需要如何在 Java 中实现想法。

一个不错的地方是Swing Components 的 Visual Guide。将它们组合到复杂的组件组的布局中。

于 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;
    }
}

任何需要使用 a 的地方JTextField,也可以使用 a 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 回答