每当我编译它时,我得到一个错误,读取“非静态变量french不能从静态上下文引用”。我刚刚开始使用GUI,但我找不到答案。我确信这很简单,但我无法弄清楚!
非常感谢任何帮助。
public class ReportCard {
JTextField french = new JTextField ("French Grade") ;
public static void main (String args[]) {
JFrame frame = new JFrame ("Report Card") ;
frame.setSize(400 , 600) ;
frame.setVisible(true) ;
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE) ;
JPanel bigPanel = new JPanel() ;
frame.getContentPane().add(bigPanel) ;
bigPanel.add(french) ;
答案 0 :(得分:3)
我强烈建议阅读有关静态作品的内容,有很多人能够比我更好地解释它。现在你可以做一些事情。 使法国静止
static JTextField french = new JTextField ("French Grade") ;
或将其放入main方法中,因为它已经处于静态上下文中,因此它本身就会使其成为静态。
public class ReportCard {
public static void main (String args[]) {
JTextField french = new JTextField ("French Grade") ;
JFrame frame = new JFrame ("Report Card") ;
frame.setSize(400 , 600) ;
frame.setVisible(true) ;
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE) ;
JPanel bigPanel = new JPanel() ;
frame.getContentPane().add(bigPanel) ;
bigPanel.add(french) ;
答案 1 :(得分:1)
变量french
是ReportCard
的实例字段,它在ReportCard
的实例之外没有上下文或含义,这意味着除非您首先创建{的实例{1}},您无法引用该变量。
虽然你可以制作ReportCard
french
,但这会让你陷入潜在问题的黑暗道路,这通常是一个坏主意,因此static
引用很容易改变,你的整个计划分崩离析。 static
也不是跨对象通信机制,不应该这样使用。
相反,您可以使用static
来创建用户界面,例如......
ReportCard