gpt4 book ai didi

java - 创建自己的JLabel

转载 作者:行者123 更新时间:2023-12-01 08:53:01 24 4
gpt4 key购买 nike

我使用带有 GridLayout 的 JPanel,并将 JLabel 放入其中。一切都有效。但我想使用我自己的类(扩展JLabel)有一个问题。

当我使用 JLabel 时,我有这样的渲染:

result

当我使用自己的 JLabel 时,我有:

result

这是我的 JLabel 自定义代码:

public class LabelCustom extends JLabel{

int x;
int y;

public LabelCustom(int x, int y) {
super();
this.x = x;
this.y = y;
this.setBackground(Color.white);
this.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.LOWERED));
}

public int getX() {
return x;
}

public void setX(int x) {
this.x = x;
}

public int getY() {
return y;
}

public void setY(int y) {
this.y = y;
}

}

以及我如何使用它:

JPanel j = new JPanel();
j.setLayout(new GridLayout(nbCaseY, nbCaseX));

for(int i=0; i<nbCaseY; i++) {
HashMap<Integer, JLabel> ligne = new HashMap();
for(int y=0; y<nbCaseX; y++) {
LabelCustom p = new LabelCustom(i, y);
p.addMouseListener(ml);
//p.setBounds(100+ y*(hauteur), 100 + i*( hauteur), hauteur, hauteur);
p.setPreferredSize(new Dimension(hauteur, hauteur));

//p.setBounds(100+ y*( (width-200-2*hauteur)/nbCaseX), 100 + i*( (height-200)/nbCaseY), ((width-200-2*hauteur)/nbCaseX), ((height-200)/nbCaseY));
p.setTransferHandler(new TransferHandler("icon"));
p.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.LOWERED));

p.setOpaque(true);
p.setVisible(true);
j.add(p);
ligne.put(y, p);
}
Frame.p.getListeNiveau().get(0).ajouterLigne(ligne);
}

最佳答案

JLabel 已经有一个 getXgetY 方法,用于在屏幕上定位标签,您(无意中)覆盖了这个方法功能,现在返回不相关的信息。

It's not for x and y position. It is for an id of hashmap, i think it is useful ;)

因此,我建议不要使用 getX/Y,而是创建一个 ID 类,它携带您需要的信息(可能会覆盖 equals > 和 hashcode 方法,以便更容易进行比较)并使用它(提供 getIDsetID 方法)

关于java - 创建自己的JLabel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42259283/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com