Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我能';我似乎无法让这项遗产发挥作用_Java_Inheritance_Setter - Fatal编程技术网

Java 我能';我似乎无法让这项遗产发挥作用

Java 我能';我似乎无法让这项遗产发挥作用,java,inheritance,setter,Java,Inheritance,Setter,我有一个标签应用程序。您可以在其中一个选项卡中输入公司名称,并将其更改为您在另一个选项卡中键入的任何名称。这两门课都有 在这段代码中,它告诉我改变关于.setCompanyName(str);静止 我看到的错误是“无法从类型About对非静态方法SetCompanyName(String)进行静态引用” 这是包含我的setter的“About”。它要求我将方法和变量设为静态,但我知道这行不通,因为我想更改它 package CourseProject; import java.awt.Colo

我有一个标签应用程序。您可以在其中一个选项卡中输入公司名称,并将其更改为您在另一个选项卡中键入的任何名称。这两门课都有

在这段代码中,它告诉我改变关于.setCompanyName(str);静止

我看到的错误是“无法从类型About对非静态方法SetCompanyName(String)进行静态引用”

这是包含我的setter的“About”。它要求我将方法和变量设为静态,但我知道这行不通,因为我想更改它

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);