分享个思路,在按钮点击事件中拿到要修改的JLabel对象,然后setText,这样不行吗,如果JLabel是不是成员变量,需要用final修饰

解决方案 »

  1.   

    private JLabel txtLabel;
    txtLabel = new Label("");//构造函数中初始化
    txtLabel.setText("xxxx");//在修改处使用
      

  2.   


    关键是我的JLabel是在一个方法里new的,然后加入到了JPanel里,没有在全局里声明,下面是创建Jlabel的代码:private JPanel getContentJPanel(){
    JPanel jpanel = new JPanel();
    jpanel.setName("contentJPanel");
    jpanel.setBackground(getBackgroundColor(CONTENT_BACKGROUND_COLOR));
    for(int i = 0; i < 7 ;i++){
    JLabel jlabel = new JLabel();
    jlabel.setName("ballNum" + (i + 1));
    jlabel.setHorizontalAlignment(SwingConstants.CENTER);
    jlabel.setBackground(getBackgroundColor(BALL_BACKGROUND_COLOR));
    jlabel.setOpaque(Boolean.TRUE);
    jlabel.setPreferredSize(new Dimension(30,20));
    jlabel.setForeground(Color.BLUE);
    if(i == 6) jlabel.setForeground(Color.RED);
    jlabel.setText("0");
    jpanel.add(jlabel);
    }
    return jpanel;
    }然后把返回的JPanel加入JFrame
    this.add(getContentJPanel(),BorderLayout.CENTER);
    这句是写在构造方法里的。
      

  3.   

    你的JButton是成员变量吗,
    关键是我的JLabel是在一个方法里new的,然后加入到了JPanel里,没有在全局里声明,下面是创建Jlabel的代码:private JPanel getContentJPanel(){
    JPanel jpanel = new JPanel();
    jpanel.setName("contentJPanel");
    jpanel.setBackground(getBackgroundColor(CONTENT_BACKGROUND_COLOR));
    for(int i = 0; i < 7 ;i++){
    JLabel jlabel = new JLabel();
    jlabel.setName("ballNum" + (i + 1));
    jlabel.setHorizontalAlignment(SwingConstants.CENTER);
    jlabel.setBackground(getBackgroundColor(BALL_BACKGROUND_COLOR));
    jlabel.setOpaque(Boolean.TRUE);
    jlabel.setPreferredSize(new Dimension(30,20));
    jlabel.setForeground(Color.BLUE);
    if(i == 6) jlabel.setForeground(Color.RED);
    jlabel.setText("0");
    jpanel.add(jlabel);
    }
    return jpanel;
    }然后把返回的JPanel加入JFrame
    this.add(getContentJPanel(),BorderLayout.CENTER);
    这句是写在构造方法里的。有一个很好地的解决方案,就是将这个JLabel声明为成员变量,这样在类内部都可以访问,如果需要在类外部访问,提供访问器接口就可以了,。不这样做的话,你的JLabel是getJPanel方法的局部变量,作用域限制在这个方法里,出了这个方法就无法访问,所以建议使用成员变量。