2014-01-06 2 views
1

У меня есть несколько JLabels для моего обновления, все работает гладко, за исключением текста.текст весь дисплей сразу?

Текст все скремблировано & выглядит, что все это отображается одновременно. Я попытался установить каждый текст, поскольку это собственная метка &, устанавливающая те, которые не имеют значения, когда метод вызывается непрозрачным. Но я получаю nullpointinterexceptions. Я также попробовал расслоить свой JFrame, но если он избавится от моего JProgrssbar?

Вот мой код:

public static void displayText(int Stage) { 
    String txt = ""; 
    if (Stage == 1) { 
     txt = "Checking Cache..."; 
    } 
    if (Stage == 2) { 
     txt = "Downloading Cache..."; 
    } 
    if (Stage == 3) { 
     txt = "Cache Download Complete!"; 
    } 
    if (Stage == 4) { 
     txt = "Unpacking Files..."; 
    } 
    if (Stage == 5) { 
     txt = "Launching Client!"; 
    } 
    lbl = new JLabel(); 
    lbl.setText(txt); 
    lbl.setBounds(137, 11, 200, 14); 
    frame.getContentPane().add(lbl); 
} 

Я попытался переформатирования его в несколько различных способов & все еще делает то же самое ...

Пример того, что он делает: enter image description here

+0

Показать остальную часть кода пожалуйста. Кроме того, почему вы создаете новый ярлык для каждого вызова? –

+0

Просто удалите 'lbl = new JLabel();' вам не нужно создавать новый 'JLabel' каждый раз. – alex2410

ответ

7

Вы каждый раз создаете новый ярлык и помещаете его поверх старого. Объявите метку где-нибудь в области вашего класса (более описательное имя тоже будет хорошим). Затем в вашем методе вызовите только lbl.setText (txt). Это обновит уже существующий ярлык обновленным текстом.

Это должно выглядеть примерно так:

public class yourGUI { 
    private JLabel progressLabel; 

    public static void main(String[] args) { 
     progressLabel = new JLabel(); 
     progressLabel.setBounds(137, 11, 200, 14); 
     frame.getContentPane().add(progressLabel); 
    } 

    public static void displayText(int Stage) { 
     String txt = ""; 
     if (Stage == 1) { 
      txt = "Checking Cache..."; 
     } else if (Stage == 2) { 
      txt = "Downloading Cache..."; 
     } else if (Stage == 3) { 
      txt = "Cache Download Complete!"; 
     } else if (Stage == 4) { 
      txt = "Unpacking Files..."; 
     } else { //assuming (Stage == 5), this is up to your discretion 
      txt = "Launching Client!"; 
     } 
     progressLabel.setText(txt); 
    } 
}  

Кроме того, нет необходимости проверять каждый, если заявление каждый раз.

+0

Привет, Turbo Спасибо. Поскольку для if, а не иначе, если я просто что-то пытался и забыл изменить его. – Ryan

+0

@ Ryan верная вещь! – turbo

Смежные вопросы