java动态显示JLabel

时间:2014-05-13 20:58:04

标签: java swing dynamic jbutton jlabel

我有一个按钮。如果单击此按钮,则会出现一个弹出窗口。弹出窗口让我写一个字。如果我写一个单词6个字母,就会出现6个jlabels,但是如果我输入另一个单词,那么JLabel就不会消失

我希望我的JLabel可能会根据较短的单词减少,但我不知道:(

谢谢你的帮助!

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    //BUTTON 1 WORD
    Controller c = new Controller();
    try {
        final JFrame popup = new JFrame();

        //display popup
        word = JOptionPane.showInputDialog(popup, "Enter one word", null);
        //control the length of the word
        c.controleW(word);

        //display jlabel lenght of word
        keyNumber.setText(String.valueOf(word.length()));


        //JLabels displays depending on the word length
        int pixels = 50;
        for (int i = 0; i < word.length(); i++) {
            label = new JLabel("_");
            label.setBounds(pixels, 200, 30, 30);
            add(label);
            label.repaint();
            pixels += 20;
        }

    } catch (Exception e) {
        System.out.println(e);
    }

}  

我的班级控制单词的长度

public String controleW(String word) {
    boolean flag = false;
    final JFrame popup = new JFrame();

    while (flag == false) {
        if (word.length() <= 3) {
            word = JOptionPane.showInputDialog(popup, "Enter one word", null);
        } else {
            flag = true;
        }
    };
    return null;
}

1 个答案:

答案 0 :(得分:3)

您总是在方法中添加标签,从不删除任何标签,因此运行代码两次确实会添加两次标签。要解决此问题,您只需在添加任何标签之前在jButton1ActionPerformed中添加removeAll();即可。这可确保删除任何以前添加的组件。