自定义组件

时间:2012-05-01 20:09:52

标签: java swing jtextfield

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

JTextField1.getCustomePram() * user input

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

我正在使用Netbeans来构建GUI,我尝试扩展JTextField但是说实话我不知道该怎么做,任何建议或者如果我这样做完全错了请告诉我。

2 个答案:

答案 0 :(得分: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.");
    }
}

答案 1 :(得分:4)

  

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

你这样做完全错了。

为此,我可以使用禁用的文本字段或标签作为单价(20英镑),使用JSpinner作为数量(5)。而不是对焦点丢失进行计算,add a change listener并在“实时”中向用户显示订购商品的新小计(以及相关的总计) - 当数量发生变化时。

  

需要了解我需要如何在Java中实现创意。

值得注意的地方是Visual Guide to Swing Components。将它们组合在一个复杂的组件组的布局中。