获取用户在其他课程中输入的文本

时间:2016-11-23 16:52:15

标签: java swing

好吧,所以我创建了一个类来制作自定义文本字段。 该类扩展了JPanel,因此我可以设置边框的颜色。

看起来像这样:

public class textfield {

    public static JTextField textF = new JTextField();


    public static class TextField extends JPanel{

        public  TextField(int x, int y, int width, int height, String bgColor, String brColor, String fgColor){

            this.setLayout(null);
            this.setBounds(x, y, width, height);
            this.setBackground(new Color(Integer.parseInt(bgColor.substring(0, 3)), Integer.parseInt(bgColor.substring(3, 6)), Integer.parseInt(bgColor.substring(6, 9))));
            this.setBorder(BorderFactory.createLineBorder(new Color(Integer.parseInt(brColor.substring(0, 3)), Integer.parseInt(brColor.substring(3, 6)), Integer.parseInt(brColor.substring(6, 9)))));


            textF.setBorder(javax.swing.BorderFactory.createEmptyBorder());
            textF.setOpaque(false);
            textF.setBounds(width / 20, 0, width, height);
            textF.setForeground(new Color(Integer.parseInt(fgColor.substring(0, 3)), Integer.parseInt(fgColor.substring(3, 6)), Integer.parseInt(fgColor.substring(6, 9))));
            add(textF);

        }

    }

} 

现在这是一个例子:

TextField userName = new textfield.TextField(1073, 177, 190, 31, "000003006", "120090040", "255255255");
add(userName);

我现在的问题是,我如何才能获得用户在文本字段中输入的文本?如果我只使用1个文本字段,我知道该怎么做,但我使用多个。

提前致谢!

1 个答案:

答案 0 :(得分:1)

你的结构对我来说很奇怪,我怀疑你错过了一些基本的面向对象的概念,并且可能只是修改了这个概念,直到你得到它的工作"。

首先,我不认为这些事情应该是static。这意味着只能有其中一个。另外,这可能只是一个简单的类而不是这个嵌入式类。类上的字段应为private,并且只在需要时通过setter / getter方法公开访问。

考虑这样的事情:

public class TextField extends JPanel{

    private JTextField textF = new JTextField();

    // the constructor you already have goes here
    // replace "textF" references with "this.textF" as needed

}

现在你有一个TextField 一个JPanel(作为内部成员)JTextField。它们都不是static,所以你可以根据需要创建它们,并且每个都是完全封装的。

然后,要访问该JTextField对象中的内容,可以在TextField对象上公开更多方法:

public class TextField extends JPanel{

    private JTextField textF = new JTextField();

    // the constructor you already have goes here
    // replace "textF" references with "this.textF" as needed

    public String getText() {
        return textF.getText();
    }

}

我们公开的getText()方法实际上只是getText()已经在JTextField上的方法的传递。我们可以通过创建更多方法来展示我们想要的许多操作。如果有很多这样的方法,直接公开textF变量的getter可能是切实可行的,尽管这在技术上会违反Demeter法。