Как создать массив JLabels в Java для печати в JFrame - PullRequest
4 голосов
/ 26 апреля 2010

Я пытаюсь создать массив меток. Каждая метка имеет различное значение, которое выходит из функции. Я не знаю точное количество этикеток, которые будут использоваться. Я имею в виду, что может быть любое количество значений для печати. Пожалуйста, помогите мне сделать это.

Ответы [ 4 ]

7 голосов
/ 26 апреля 2010

просто достаточно, чтобы один метод вернул массив или некоторую коллекцию JLabels и добавил их все в ваш JComponent (например, JPanel)

class MyPanel extends JPanel{

    public MyPanel(){
        super();
        showGUI();
    }

    private JLabel[] createLabels(){
        JLabel[] labels=new JLabel[10]
        for (int i=0;i<10;i++){
            labels[i]=new JLabel("message" + i);
        }
        return labels;
    }

    private void showGUI(){
        JLabel[] labels=createLabels();
        for (int i=0;i<labels.length();i++){
            this.add(labels[i]);
        }
    }
}
2 голосов
/ 26 апреля 2010

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

Java-учебник - Как нам список :

альтернативный текст http://java.sun.com/docs/books/tutorial/figures/uiswing/components/14ListDialog-nowrap.png

0 голосов
/ 03 декабря 2017

На самом деле вы можете создать массив любого компонента Swing, поскольку каждый компонент Swing является в основном составным типом данных. Попробуйте это:

javax.swing.JTextField[] array = new javax.swing.JTextField[number_of_elements];
0 голосов
/ 26 апреля 2010

Ты шутишь? Что ж, если вы серьезно, сначала взгляните на некоторые API Java, такие как JLabel, JPanel и некоторые элементы языка.

Тогда вы сможете сделать что-то вроде (я уверен, что мой код не скомпилируется)

public static JPanel getLabels(int count) {
    JPanel panel = new JPanel(new FlowLayout());
    for(int i =0; i<count; i++) {
        panel.add(new JLabel(theFunctionThatCannotBeNamedHere(i)));
    }
    return panel;
}

Обратите внимание, что theFunctionThatCannotBeNamedHere - это функция, о которой вы говорили.

...