更改另一个类

时间:2017-01-05 14:52:29

标签: java

目前,我遇到了一个我不知道如何更改另一个类的字符串值的问题。

有这个按钮,在我点击它之后,我希望它改变在该类中声明的另一个类的字符串值。

在主类中,我已经创建了对象:

public class BTRSMain {
    private MainMenuPage mainmenupage;
public void start() throws Exception{
    mainmenupage = new MainMenuPage();
}}

以下代码显示了按钮功能:

public class OriginSubmit implements ActionListener {
    public void actionPerformed(ActionEvent SignUpSubmit){
        if(mainmenupage.OriginCB.getSelectedItem().equals("APU")){
            //After clicking the button the string will change into:
            //String[] Destination = ("Seremban","Melaka","Ipoh","Kuantan");
        }
    }
}

另一个类名是“MainMenuPage.java”。 字符串的声明和字符串在组合框中的包含:

public class MainMenuPage {
    String[] Destination;
    JComboBox DestinationCB = new JComboBox(Destination);
}

非常感谢任何帮助。谢谢!

4 个答案:

答案 0 :(得分:0)

有两种方法可以做到这一点。您可以通过在OriginSubmit类中创建MainMenuPage类的对象来完成此操作。

public class OriginSubmit implements ActionListener {
MainMenuPage mainMenu = new MainMenuPage(); //this line of code to be added

public void actionPerformed(ActionEvent SignUpSubmit){
    if(mainmenupage.OriginCB.getSelectedItem().equals("APU")){
        mainMenu.Destination = new String[]{"Seremban","Melaka","Ipoh","Kuantan"}; //line of code to be added

        //After clicking the button the string will change into:
        //String[] Destination = new String[]{"Seremban","Melaka","Ipoh","Kuantan"};
    }
}
}

我现在解释第二种方法。如果你不想要一个对象,你必须使MainMenuPage类保持静态。然后在OriginSubmit类中使用它。

public static class MainMenuPage { //make it static
String[] Destination;
JComboBox DestinationCB = new JComboBox(Destination);
}

public class OriginSubmit implements ActionListener {
public void actionPerformed(ActionEvent SignUpSubmit){
    if(mainmenupage.OriginCB.getSelectedItem().equals("APU")){
        MainMenuPage.Destination = new String[]{"Seremban","Melaka","Ipoh","Kuantan"}; //this line of code to be added

        //After clicking the button the string will change into:
        //String[] Destination = ("Seremban","Melaka","Ipoh","Kuantan");
    }
}
}

答案 1 :(得分:0)

假设MainMenuPage和OriginSubmit类在同一个包中,请用以下内容替换您的注释代码:

/*Construct the MainMenuPage object */
MainMenuPage mainMenuPage = new MainMenuPage();

/*Invoke the required method on the constructed object*/
mainMenuPage.Destination = new String[]{"Seremban","Melaka","Ipoh","Kuantan"};

但是,如果您的类位于不同的包中,则不能在另一个类中直接访问来自一个类的package-private成员(例如“Destination”)。您必须在类中添加公共setter方法以允许外部人员调用它。例如。 public void setDestination(String[] newDestination){this.Destination = newDestination;}

答案 2 :(得分:0)

保持 ENCAPSULATION !并尝试遵循干净的代码(变量命名)。

学习OOP和Java的基础知识。因为这是通过使用getter和setter实现的,它们是基础。

public class MainMenuPage {
    private String[] destination;
    JComboBox destinationCB = new JComboBox(destination);

    public MainMenupage() {
        this.destination = new String[4];
    }

    // Your other code

    public void setDestination(String[] destination) {
        this.destination = destination;
    }

    public String[] getDestination() {
        return this.destination;
    }
}

然后打电话给这个二传手:

public class OriginSubmit implements ActionListener {
    public void actionPerformed(ActionEvent SignUpSubmit){
        if(mainmenupage.OriginCB.getSelectedItem().equals("APU")){
            // I dont know where are you declare object for MainMenu class
            mainMenu.setDestination(/* your value */);
        }
    }
}

答案 3 :(得分:0)

您正在搜索的主题称为多级继承。使用关键字" extend"这些类不再分开,它们正在形成一个虚拟超类,它由系统范围内的所有方法和变量组成。多级继承是快速应用程序编程的强大工具。

public class BTRSMain {
    private MainMenuPage mainmenupage;
public void start() throws Exception{
    mainmenupage = new MainMenuPage();
}}
public class OriginSubmit implements ActionListener extends BTRSMain {
    public void actionPerformed(ActionEvent SignUpSubmit){
        if(mainmenupage.OriginCB.getSelectedItem().equals("APU")){
            //After clicking the button the string will change into:
            //String[] Destination = ("Seremban","Melaka","Ipoh","Kuantan");
        }
    }
}
public class MainMenuPage extends OriginSubmit {
    String[] Destination;
    JComboBox DestinationCB = new JComboBox(Destination);
}