爲什麼不能在的JLabel的Java Swing或在上面的程序,爲什麼我必須把此行的「私人內部類像JMenu的JMenuBar的爲什麼不能JLabel的是一個內部類聲明
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
public class Chk extends JFrame
{
private JLabel lbl ;
public Chk()
{
lbl = new JLabel("StatusBar");
lbl.setBorder(BorderFactory.createEtchedBorder(EtchedBorder.RAISED));
add(lbl,BorderLayout.SOUTH);
JMenuBar menubar=new JMenuBar();
JMenu file = new JMenu("File");
JMenu view = new JMenu("View");
JCheckBoxMenuItem sbar= new JCheckBoxMenuItem("Status-Bar");
sbar.setState(true);
sbar.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent event)
{
if (lbl.isVisible())
{lbl.setVisible(false);}
else
{lbl.setVisible(true);}
}});
menubar.add(file);
view.add(sbar);
menubar.add(view);
setJMenuBar(menubar);
setSize(300,200);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
}
public static void main(String args[])
{new Chk();}
}
內部聲明JLabel lbl;「
爲什麼我不能使用JLabel lbl = new JLabel(「Label」);
它說:「局部變量LBL從內部類訪問,需要被聲明爲final」 – subanki 2010-08-10 15:08:26
所以每當我在構造函數中使用一個變量,它需要首先宣佈爲私人外部?或者我必須宣佈它是最終的,對嗎? – subanki 2010-08-10 15:25:59
它取決於「變量」是否必須在所有類中重用。如果是這種情況,那麼它必須聲明爲一個字段(私有的,不在方法或構造函數中)。此外,如果此字段必須用於內部類(例如您的情況下的ActionListener),則必須將其聲明爲final。 – 2010-08-10 16:15:24