Я использую JPanel с GridLayout, и я положил JLabel
внутрь. Бесконечные работы. Но я хочу использовать свой собственный класс (extends JLabel
), есть проблема.Создание собственного JLabel
Когда я использую JLabel
у меня есть этот рендеринг:
И когда я использую мои собственные JLabel
У меня есть что:
Вот мой код из моего 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' уже имеет методы' get/X/Y', лучше не повторять их, если у вас нет очень хорошего Причина – MadProgrammer
Это не для позиции x и y. Это для id hashmap, я думаю, что это полезно;) – Sebastien
Возможно, каким образом, как вы думаете, API определяет позицию вашего компонента? Бьюсь об заклад, если вы добавили '@ Override' в методы' getX' и 'getY', он все равно будет компилироваться, сообщая вам, что вы переопределяете методы родительского класса, методы, которые он, вероятно, хочет использовать для какой-либо цели ... как позиция компонента ... может быть – MadProgrammer