3

我是第一次使用 javax.swing 和 jframes,所以如果您发现这个问题很原始,请原谅。

问题:在我的主函数中,我创建了一个类的对象,可以说是 ClassTest。所以代码如下:

      import TestPackage.ClassTest.*;

      public class Qinterface extends JFrame and implements ActionListener
      {
      public string Login;

      public static void main(String[] args){
      ClassTest test = new ClassTest();
      try{ eventqueue invoker ...}catch{}
      }


    Qinterface(){
    setResizable(false);
    setTitle("Carrefour : Qualys Application");
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setBounds(300, 100, 850, 500);
    contentPane = new JPanel();
    contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
    setContentPane(contentPane);
    contentPane.setLayout(null);

    txtEnterText = new JTextField();
    txtEnterText.setText("Enter Qualys Login");
    txtEnterText.setBounds(10, 193, 166, 23);
    contentPane.add(txtEnterText);
    txtEnterText.setColumns(10);

        btnSubmit.addActionListener(new ActionListener() {  
        public void actionPerformed(ActionEvent eSubmit)
        {
            //button is pressed
            System.out.println("You clicked the button Submit");
            Login = txtEnterText.getText();}});

           }
              }

因此,如代码的最后一行所示,我能够从 txtEnterText 字段中获取值并分配给局部变量“Login”。但是,如果我想将此值分配给在主函数中创建的类的实例,例如,我该怎么做;

            test.x=txtEnterText.getText();

我知道在这种方法中这是不可能的,因为我们在构造函数中 Qinterface 类和在 main 中实例化的 ClassTest 的变量是不可见的。

所以这个问题是一般性的和概念性的;在使用 javax.swing 编码时,您如何解决此类问题?

4

1 回答 1

1

以登录过程为例:

您的接口类可以包含由操作侦听器填充的“LoginData”对象。通过为数据对象提供一个 getter,然后可以从接口外部访问登录数据。

这只是您可以解决此问题的众多方法之一。

这将是 MVC 架构的一个很好的候选者——你可以在这里阅读一下。

于 2013-08-15T17:47:58.397 回答