gpt4 book ai didi

java - 出现错误 : variable private acces in Component

转载 作者:行者123 更新时间:2023-12-01 13:26:47 25 4
gpt4 key购买 nike

我陷入了这个错误,“名称在组件中具有私有(private)访问权限”。我不明白这意味着什么,但我认为我可能错误地初始化了 main 方法中的变量“name”。错误点位于 startGame() 方法内,我在该方法中初始化了“label1”。

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Gamey extends JFrame
{
private JPanel panelUp;
private JPanel panelDown;
private JButton btnPlay, btnNext;
private JLabel label1;

public Gamey()
{
super("Game");
startGame();
}

public void startGame()
{
Container c = getContentPane();
panelUp = new JPanel();
panelDown = new JPanel();
label1 = new JLabel(name + "Snow glows white on the mountain tonight"); //name has a private access in Component
btnPlay = new JButton("Play");
btnNext = new JButton("Next");

btnPlay.addActionListener(new Handler());

panelUp.add(label1);
panelDown.add(btnPlay);

c.add(panelUp, BorderLayout.CENTER);
c.add(panelDown, BorderLayout.PAGE_END);


}

public class Handler implements ActionListener
{


public void actionPerformed(ActionEvent e)
{
if(e.getSource() == btnPlay)
{
btnPlay.setText("Next");
label1.setText("Not a footprint to be seen");

}

}

}




public static void main(String[] args)
{
String name = JOptionPane.showInputDialog(null, "enter name: ");
Gamey game = new Gamey();

game.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
game.setSize(450,450);
game.setVisible(true);
game.setLocationRelativeTo(null);
}

}

最佳答案

你的类Gamey扩展了JFrame类又扩展了 Component类(class)。在 startGame() 方法中,您在该语句中使用了名为 name 的字段。

label1 = new JLabel(name + "Snow glows white on the mountain tonight");

由于您的 Gamey 类中没有该名称的实例变量,因此它已沿层次结构向上检查此类字段,并在 Component 中找到一个存在的字段类(class)。但是此字段 name 具有 private 访问修饰符,这就是您收到错误的原因

name has a private access in Component.

要消除此错误,请根据您的要求在 Gamey 类或 startGame() 中声明 name 字段.

注意:您的代码有点困惑,但我可以看到您在 main() 方法中有一个变量 name 。您可以将其设为实例变量,并在 main() 方法中填充其值,然后可以在 startGame() 方法中使用该值。像这样的事情:

public class Gamey extends JFrame {
// Other fields
private String name;
// Getter & setter for name

...

public static void main(String[] args) {
Gamey game = new Gamey();
game.setName(JOptionPane.showInputDialog(null, "enter name: ")); // Set the name with the value from the input dialog
...
}
}

关于java - 出现错误 : variable private acces in Component,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21777123/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com