Hallo, ich habe ein panel auf dem ein feld von Labels ist( stellen schachbrett dar) , nun habe ich mir ein popup menu erstellt welches ich bei rechtsklick anzeigen möchte allerdings sehe ich nichts sondern die ganznormale click routine wird aufgerufen was mache ich falsch ?
Code:
//Hier die def des Popupmenus und der einträge
public JPopupMenu getCheckersPopup() {
if (checkersPopup == null) {
checkersPopup = new JPopupMenu();
/*JMenuItem mi = new JMenuItem("Rueckgaengig");
mi.addActionListener(this);
checkersPopup.add(mi);*/
checkersPopup.add(getItemEnd());
checkersPopup.add(getItemClear());
checkersPopup.add(getItemBack());
}
return checkersPopup;
}
private JMenuItem getItemEnd() {
if (itemEnd == null) {
itemEnd = new JMenuItem();
itemEnd.setText("Zug Beenden");
itemEnd.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
statusLabel.setText("Zugbeenden geklickt");
}
});
}
return itemEnd;
}
private JMenuItem getItemClear() {
if (itemClear == null) {
itemClear = new JMenuItem();
itemClear.setText("Zug löschen");
itemClear.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
statusLabel.setText("Zuglöschen geklickt");
}
});
}
return itemClear;
}
private JMenuItem getItemBack() {
if (itemBack == null) {
itemBack = new JMenuItem();
itemBack.setText("Rückgängig");
itemBack.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
statusLabel.setText("ZRückgängig geklickt");
}
});
}
return itemBack;
}
Code:
//jetzt die def der labels
private void initialize(int m_player) {
this.setSize(450, 450);
this.setLayout(new GridBagLayout());
GridBagConstraints gridBagConstraints;
checkersFields = new JLabel[ChessBoard.m_count][ChessBoard.m_count];
JLabel field;
for (int x = 0; x < ChessBoard.m_count; x++) {
for (int y = 0; y < ChessBoard.m_count ; y++) {
gridBagConstraints = new GridBagConstraints();
if (m_player%2!=0)
{
gridBagConstraints.gridx = x;
gridBagConstraints.gridy = Math.abs(y-7);
}
else{
gridBagConstraints.gridx = Math.abs(x-7);
gridBagConstraints.gridy = Math.abs(y);
}
checkersFields[x][y] = field = new JLabel();
field.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
if (e.isPopupTrigger())
{
checkersPopup.show(e.getComponent(),e.getX(),e.getY());
}
else
{
controller.click(e);
}
}
public void mousePressed(MouseEvent e) {
if (e.isPopupTrigger())
checkersPopup.show(e.getComponent(), e.getX(), e.getY());
}
public void mouseReleased(MouseEvent e) {
if (e.isPopupTrigger())
{
checkersPopup.show(e.getComponent(),e.getX(),e.getY());
}
}
});
field.setText("" + x + y);
field.setMinimumSize(new Dimension(50, 50));
field.setMaximumSize(new Dimension(50, 50));
field.setPreferredSize(new Dimension(50,50));
this.add(field, gridBagConstraints);
}
}
gridBagConstraints = new GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = ChessBoard.m_count;
gridBagConstraints.gridwidth = ChessBoard.m_count;
gridBagConstraints.fill = GridBagConstraints.HORIZONTAL;
this.add(getStatusPanel(), gridBagConstraints);
gridBagConstraints.gridx = ChessBoard.m_count-2;
this.add(getZugEndeButton(), gridBagConstraints);
this.setController(new CheckersController(this));
}