目前,我遇到了一个我不知道如何更改另一个类的字符串值的问题。
有这个按钮,在我点击它之后,我希望它改变在该类中声明的另一个类的字符串值。
在主类中,我已经创建了对象:
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);
}
非常感谢任何帮助。谢谢!
答案 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);
}