Java 我能';我似乎无法让这项遗产发挥作用
我有一个标签应用程序。您可以在其中一个选项卡中输入公司名称,并将其更改为您在另一个选项卡中键入的任何名称。这两门课都有 在这段代码中,它告诉我改变关于.setCompanyName(str);静止 我看到的错误是“无法从类型About对非静态方法SetCompanyName(String)进行静态引用” 这是包含我的setter的“About”。它要求我将方法和变量设为静态,但我知道这行不通,因为我想更改它Java 我能';我似乎无法让这项遗产发挥作用,java,inheritance,setter,Java,Inheritance,Setter,我有一个标签应用程序。您可以在其中一个选项卡中输入公司名称,并将其更改为您在另一个选项卡中键入的任何名称。这两门课都有 在这段代码中,它告诉我改变关于.setCompanyName(str);静止 我看到的错误是“无法从类型About对非静态方法SetCompanyName(String)进行静态引用” 这是包含我的setter的“About”。它要求我将方法和变量设为静态,但我知道这行不通,因为我想更改它 package CourseProject; import java.awt.Colo
package CourseProject;
import java.awt.Color;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class About extends JPanel{
private JLabel programInfoLabel;
private JLabel programInfo;
private JLabel programmerLabel;
private JLabel programmer;
private JLabel companyLabel;
JLabel company;
public String companyName = "enter a company name in options";
public About() {
GridBagLayout gridbag = new GridBagLayout();
GridBagConstraints c = new GridBagConstraints();
c.fill = GridBagConstraints.NORTH;
setBackground(Color.WHITE);
super.setLayout(gridbag);
c.insets = new Insets(10, 10, 10, 10);
programInfoLabel = new JLabel("Program Information:");
programInfo = new JLabel("This is the CIS355A course project application");
programmerLabel = new JLabel("Programmer:");
programmer = new JLabel("Kevin Rankin");
companyLabel = new JLabel("Company Name:");
company = new JLabel(companyName);
c.gridx = 0;
c.gridy = 0;
add(programInfoLabel, c);
c.gridx = 1;
c.gridy = 0;
add(programInfo, c);
c.gridx = 0;
c.gridy = 1;
add(programmerLabel, c);
c.gridx = 1;
c.gridy = 1;
add(programmer, c);
c.gridx = 0;
c.gridy = 2;
add(companyLabel, c);
c.gridx = 1;
c.gridy = 2;
add(company, c);
}
public void SetCompanyName(String str){
company.setText(str);
}
}
在这条线上
About.SetCompanyName(str);
您正在静态调用SetCompanyName(通过使用类名“About”)。您应该将方法设置为静态(与“final”不同;您似乎对此感到困惑),或者首先创建about类的实例,如下所示:
About myAboutObject = new About();
myAboutObject.SetCompanyName(str);
你一针见血,我的朋友。我混淆了最终和静态。。。谢谢lot@helloWorldIsAlliKnow如果你想在不启动该类的任何对象的情况下使用该类和方法,你需要使该方法或者是静态的,或者是静态的。
About myAboutObject = new About();
myAboutObject.SetCompanyName(str);