从另一个班级中取变量?

时间:2014-08-13 10:02:01

标签: java swing

我正在用Java编写程序(使用Swing)来连接数据库。我有两节课。程序从interface.java开始,在那里创建带有用户界面的表单,其中我有登录和密码字段以及连接按钮。当用户按下按钮时,应开始第二类(连接)。

还有我的问题 - 是否可以将变量从一个类(接口)转移到另一个类(connecting.java)?如果是,那怎么样?

代码:

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JProgressBar;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JButton;
import javax.swing.JTextArea;


public class Interface extends JFrame {

    private JPanel contentPane;
    private JTextField textField;
    private JTextField textField_1;

    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    GUI frame = new GUI();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the frame.
     */
    public GUI() {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 615, 300);
        setTitle("DefectLoader");
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        contentPane.setLayout(null);

        JLabel lblNewLabel = new JLabel("Login");
        lblNewLabel.setBounds(10, 8, 65, 14);
        contentPane.add(lblNewLabel);

        JLabel lblNewLabel_1 = new JLabel("Password");
        lblNewLabel_1.setBounds(10, 40, 65, 14);
        contentPane.add(lblNewLabel_1);

        textField = new JTextField();
        textField.setBounds(80, 5, 100, 20);
        contentPane.add(textField);
        textField.setColumns(10);

        textField_1 = new JTextField();
        textField_1.setBounds(80, 35, 100, 20);
        contentPane.add(textField_1);
        textField_1.setColumns(10);

        JButton btnNewButton = new JButton("Connect");
        btnNewButton.setBounds(10, 85, 170, 23);
        contentPane.add(btnNewButton);
    }
}

2 个答案:

答案 0 :(得分:0)

是。这是可能的。

如果他们是static字段,您可以将其称为interface.variableName;如果private您可以创建如下的getter方法:

public variableType getVariableX(){
    return variableX;
}

并在该类的实例上调用它们。

例如:

Interface interface = new Interface();

interface.getVariableX();//<-- Assign this to a variable or do w/e operation

等。

如果你想要更多,你需要发布一些代码

评论后更新:

对于登录名和密码,您可以:

1)在您的界面static上将这些字段设置为class

public static String login = //whatever

public static String password = //whatever

2)在您的连接class内执行以下操作:

String login = interface.login;

String password = interface.password;

或者像这样使用它们:

System.out.println(interface.login);

等。

注意:您还应了解Java命名约定。您应该以大写字母开头命名您的课程。像Connecting等 希望这有帮助

答案 1 :(得分:0)

是的,就像这样:

public class Interface {
    private String foo = "bar";
    private int number = 14;

    public String getFoo() {
        return this.foo;
    }

    public String getNumber() {
        return this.bar;
    }
}

public class Connecting {
    public Connecting(Interface userInterface) {
        System.out.println("Foo is " + userInterface.getFoo());
        System.out.println("Number is " + userInterface.getNumber());
    }
}