Java-如何使用方法

Java-如何使用方法,java,swing,jlabel,imageicon,Java,Swing,Jlabel,Imageicon,我有一个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 ImageI

我有一个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")));
我想向它们中的每一个添加ToolTiptText。有没有比使用temp变量保存其中一个值然后继续重复使用更好的方法

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"));

有很多方法可以做到这一点,但没有什么真正干净或优雅

无论如何,在大多数情况下,创建一个类的新实例而不将它们存储在局部变量中(即使是临时使用)不是一个好主意


因此,这里最好的做法是使用这个
temp
变量或将代码委托给其他对象(方法/构建器)。

在一行中可以这样做,但没有什么真正干净或优雅的

无论如何,在大多数情况下,创建一个类的新实例而不将它们存储在局部变量中(即使是临时使用)不是一个好主意


因此,这里最好的做法是使用这个
temp
变量或将代码委托给其他对象(方法/生成器)。

您可以创建一个方法,在其中传递图像位置、文本和工具提示文本,以避免所有代码重复

这应该行得通

private static JLabel createImageLabel(String imageLocation, String name, String toolTipText) {
    JLabel temp  = new JLabel(new ImageIcon(imageLocation, name));
    temp.setToolTipText(toolTipText);
    return temp;
}

您可以创建一个方法,在其中传递图像位置、文本和工具提示文本,以避免所有代码重复

这应该行得通

private static JLabel createImageLabel(String imageLocation, String name, String toolTipText) {
    JLabel temp  = new JLabel(new ImageIcon(imageLocation, name));
    temp.setToolTipText(toolTipText);
    return temp;
}

您可以创建一个函数来为您创建这些。有时,当我有一个大阵列,并且需要反复执行相同的操作时,我会这样做:

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"));

您可以创建一个函数来为您创建这些。有时,当我有一个大阵列,并且需要反复执行相同的操作时,我会这样做:

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"));
您可以使用一个“temp”变量,但如果您这样做,您不想先创建一个空的JLabel,然后再创建一个带有图标和文本的新JLabel

但是创建一个helper方法怎么样

...
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;
} 
您可以使用一个“temp”变量,但如果您这样做,您不想先创建一个空的JLabel,然后再创建一个带有图标和文本的新JLabel

但是创建一个helper方法怎么样

...
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;
} 

你有什么理由不想保留对它们的引用吗?因此有
JLabel myLabel1=新的JLabel(etc,etc)
对于它们中的每一个,然后使用这些引用来添加工具提示?我得到的错误是:类型容器中的add(Component)方法不适用于参数(void)dann.dev:是的,因为我不需要继续引用它们。我想保持我的代码整洁有序有什么理由你不想保留对它们的引用?因此有
JLabel myLabel1=新的JLabel(etc,etc)
对于它们中的每一个,然后使用这些引用来添加工具提示?我得到的错误是:类型容器中的add(Component)方法不适用于参数(void)dann.dev:是的,因为我不需要继续引用它们。我想让我的代码保持整洁和条理化谢谢,这是我将要做的,非常感谢。我不确定是否有更好的捷径,但这将不得不做。谢谢,这是我将做的,非常感谢。我不确定是否有更好的捷径,但这将不得不这样做。