2016-03-03 70 views
2

我在class中获得了一些JButton的,JLabelJTextField。 我只是在panel.add()方法中初始化它们,并且我在它们的每一个附近都有一个The value of the field 'nameOfField' is not used警告。未使用字段'nameOfField'的值 - Java Swing

我的类:

public class GuiClass 
{ 
    private JFrame frame; 
    private JButton button1; 
    private JButton button2; 
    private JLabel label; 
    private JTextField textField; 
    private JPanel upperPanel; 
    private JPanel lowerPanel; 

    public GuiClass() 
    { 
     this.frame = new JFrame("Complex layout GUI example"); 
     this.upperPanel = new JPanel(); 
     this.lowerPanel = new JPanel(); 

     this.upperPanel.add(this.label = new JLabel("Enter your password:")); 
     this.upperPanel.add(this.textField = new JTextField(20)); // Size of the textField 
     this.lowerPanel.add(this.button1 = new JButton("Cancel")); 
     this.lowerPanel.add(this.button2 = new JButton("Login")); 

     this.frame.setLayout(new GridLayout(2,1)); 

     this.frame.add(this.upperPanel); 
     this.frame.add(this.lowerPanel); 

     this.frame.pack(); 
     this.frame.setVisible(true); 
    } 
} 

警告靠近按钮1,按钮2,标签和文本框。 我使用Eclipse。什么困扰它?

PS

我可以生成吸气的和setter的,并警告显然走了,但我想从中学习Java编程什么是我的错误(如果有的话)。

谢谢。

+0

由于你从来没有真正使用它们,所以Eclipse看到了''button2''这样的字段是没有必要的。添加可以在没有赋值的情况下完成,所以这不是真正的用法。引入公共getter可以消除警告,因为字段_could_可以通过该getter间接访问,而Eclipse不知道是否是这种情况(您可能正在编写库等)。 – Thomas

+0

其他IDE也有类似的功能。 –

+0

@Thomas好吧,这是一个更快的方式来编写这样的代码。所以....我应该改变它首先初始化变量,然后添加或只是离开它? – God

回答

2
private JFrame frame; 
private JButton button1; 
private JButton button2; 
private JLabel label;    //All Fields are private 
private JTextField textField; 
private JPanel upperPanel; 
private JPanel lowerPanel; 

这里所有refrence变量,你使是private。这意味着所有的成员变量只有这个Class的范围。所以,你应该在这个类中使用所有这些refrence variables否则eclipse会显示警告。但是,这些警告不是错误,但一些智能IDEeclipseIntelli j Idea将警告您是否有任何未使用的variables您已声明。

现在来谈谈你的第二个参数。这是

生成getter和setter的和警告显然走了?

如果您生成getterssetters。这些有public修饰符,这意味着您可以使用这些variable以外的类别setget成员variables的值。所以,它不会引发任何Warning,因为eclipse意识到这些成员变量可能会在Class之外使用。

谢谢。