Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.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 如何使JComponent全球化_Java_Jlabel_Public_Jcomponent - Fatal编程技术网

Java 如何使JComponent全球化

Java 如何使JComponent全球化,java,jlabel,public,jcomponent,Java,Jlabel,Public,Jcomponent,我在一个方法中创建了一个JLabel,我想访问它 在我的ItemListener中。如何使我的JLabel公开静态 public class MainTicketPrinter implements ItemListener{ public static void main(String[] args) { new MainTicketPrinter().ticket(); } public void ticket() { JLabel

我在一个方法中创建了一个JLabel,我想访问它 在我的ItemListener中。如何使我的JLabel公开静态

public class MainTicketPrinter implements ItemListener{

    public static void main(String[] args) {
        new MainTicketPrinter().ticket();
    }

    public void ticket() {
        JLabel lblTicket= new JLabel("This is a Ticket");
        lblTicket.addItemListener(this);      
    }
    public void itemStateChanged(ItemEvent e) {
        lblTicket.setVisible(true);
    }
}
这应该起作用:

public class MainTicketPrinter implements ItemListener{
    public static JLabel lblTicket;

    public static void main(String[] args) {
        new MainTicketPrinter().ticket();
    }

    public void ticket() {
        lblTicket= new JLabel("This is a Ticket");
        lblTicket.addItemListener(this);    
    }

    public void itemStateChanged(ItemEvent e) {
        lblTicket.setVisible(true);
    }
}

编辑:我不确定,但也许可以通过调用的事件访问该项目?

如果您只想这样做,可以使用public static JLabel lblTicket=new jlabelhis是一个票证;在班级层面。但是首先考虑一下你的设计,@thusitathilinadayaratne的评论和Matthijs answer有你想要的答案,实际上你不需要在这种情况下使用公共静态,因为你是从ItemListener本身访问它的。如果你有两个MainTicketPrinter,你可能会在这个静态变量上遇到麻烦。如果我有200多个JComponents,在类级别上声明它们是否仍然是一个好的做法?@user3458556如果属于该类的所有对象都共享该公共属性,那么应该在类级别上声明一些东西,例如,如果您希望打印具有相同颜色的所有票据,则在类级别保留该颜色是有意义的。任何其他依赖于对象的属性都应该分别为每个对象声明,即没有静态属性。谢谢,这是非常有用的信息。但这会告诉我,它不应该在类级别声明,因为我只想要某张票的特定标签。但是如果我在methode中声明它,我就不能在itemListener中访问它。是否有可能在票证方法中更改ItemStateChase?@user3458556我想你对此感到困惑。实例变量属于一个对象,定义时不使用static关键字。类变量为将从该类创建的每个对象定义一次。将一种方法放在另一种方法中是不可能的。如果您仍然需要Java基础知识方面的帮助,请参阅变量和Java程序员1 Java入门。