我有一个JLabel列表,我正在进入我的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")));
我想为每个人添加tooltiptext。有没有比使用临时变量来保存其中一个值然后继续重复使用更好的方法?
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"));
答案 0 :(得分:2)
您可以创建一种方法,在该方法中传入图像位置,文本和工具提示文本,以避免所有代码重复。
这应该有效
private static JLabel createImageLabel(String imageLocation, String name, String toolTipText) {
JLabel temp = new JLabel(new ImageIcon(imageLocation, name));
temp.setToolTipText(toolTipText);
return temp;
}
答案 1 :(得分:2)
您可以创建一个功能来为您创建这些功能。有时当我有一个大阵列并且需要一遍又一遍地做同样的事情时我会这样做:
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"));
答案 2 :(得分:2)
你可以使用“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;
}
答案 3 :(得分:0)
有一些方法可以在一行中完成,但没有什么真正干净也不优雅。
无论如何,在大多数情况下,创建类的新实例并且不将它们存储在至少一个局部变量中(即使是临时使用)也不是一个好主意。
因此,最好的办法是使用此temp
变量或将代码委托给其他人(方法/构建器)。