Java - как использовать методы - PullRequest
0 голосов
/ 23 ноября 2011

У меня есть список JLabels, которые я встраиваю в свою JPanel:

avatarGridPanel.add(new JLabel(new ImageIcon("images/gui/orc_male.png", "Orc Male")));
avatarGridPanel.add(new JLabel(new ImageIcon("images/gui/human_male.png", "Human Male")));
avatarGridPanel.add(new JLabel(new ImageIcon("images/gui/tundrian_male.png", "Tundrian Male")));
avatarGridPanel.add(new JLabel(new ImageIcon("images/gui/brimlock_male.png", "Brimlock Male")));

Я хочу добавить подсказку для каждого из них.Есть ли лучший способ, чем использовать временную переменную для хранения одного из их значений, а затем снова использовать его?

JLabel temp = new JLabel();
temp = new JLabel(new ImageIcon("images/gui/human_male.png", "Human Male"));
temp.setToolTipText("Human Male");
avatarGridPanel.add(temp);

Я попытался сделать что-то подобное (ниже), но не смог заставить его работать,Спасибо за любую помощь!

avatarGridPanel.add(new JLabel(new ImageIcon("images/gui/human_male.png", "Human Male")).setToolTipText("Human Male"));

Ответы [ 4 ]

2 голосов
/ 23 ноября 2011

Вы можете использовать переменную "temp", но если вы не хотите сначала создать пустой JLabel, а затем сразу после этого новый JLabel со значком и текстом.

Но как насчет созданиявспомогательный метод?

...
avatarGridPanel.add(createLabel("images/gui/human_male.png", "Human Male"));
...

private JLabel createLabel(String iconPath, String description) {
    JLabel label = new JLabel(new ImageIcon(iconPath, description));
    label.setToolTipText(description);
    return label;
} 
2 голосов
/ 23 ноября 2011

Вы можете создать метод, в котором вы передадите местоположение изображения, текст и текст всплывающей подсказки, чтобы избежать всего этого повторения кода.

Это должно работать

private static JLabel createImageLabel(String imageLocation, String name, String toolTipText) {
    JLabel temp  = new JLabel(new ImageIcon(imageLocation, name));
    temp.setToolTipText(toolTipText);
    return temp;
}
2 голосов
/ 23 ноября 2011

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

private static JLabel makeLabel(String path, String name) {
    JLabel label = new JLabel(new ImageIcon(path, name));
    label.setToolTipText(name);
    return label;
}

Тогда в другом месте в этом классе:

avatarGridPanel.add(makeLabel("images/gui/orc_male.png", "Orc Male"));
0 голосов
/ 23 ноября 2011

Есть способы сделать это в одной строке, но ничего действительно чистого и элегантного.

Во всяком случае, в большинстве случаев не очень хорошая идея создавать новые экземпляры класса и не хранить их в них,по крайней мере, локальная переменная (даже для временного использования).

Итак, лучшее, что нужно сделать здесь, это иметь эту переменную temp или делегировать код чему-то другому (метод / строитель).

...