0

JPanel に挿入する JLabels のリストがあります。

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 を追加したいと思います。一時変数を使用してそれらの値の 1 つを保持し、それを再利用し続けるよりも良い方法はありますか?

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

4 に答える 4

2

画像の場所、テキスト、およびツールヒント テキストを渡すメソッドを作成して、コードの繰り返しをすべて回避できます。

これはうまくいくはずです

private static JLabel createImageLabel(String imageLocation, String name, String toolTipText) {
    JLabel temp  = new JLabel(new ImageIcon(imageLocation, name));
    temp.setToolTipText(toolTipText);
    return temp;
}
于 2011-11-23T18:52:40.630 に答える
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"));
于 2011-11-23T18:54:00.127 に答える
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;
} 
于 2011-11-23T18:56:16.787 に答える
0

1行でそれを行う方法はありますが、本当にきれいでもエレガントでもありません。

とにかく、ほとんどの場合、クラスの新しいインスタンスを作成し、それらを少なくともローカル変数に格納しないことはお勧めできません (一時的な使用であっても)。

したがって、ここで行う最善の方法は、このtemp変数を使用するか、コードを別のもの (メソッド/ビルダー) に委譲することです。

于 2011-11-23T18:51:51.657 に答える