Ich bin in den frühen Phasen der Herstellung von Battleships (gerade begann einen Computer-Abschluss) und hatte Eclipse unter Windows verwendet. Bisher habe ich gerade die Grids erstellt und den jbuttons einen Actionlistener hinzugefügt, so dass sie beim Klick die Farbe ändern.Code funktioniert auf Windows, aber nicht auf dem Mac
Es funktioniert gut, wenn ich es auf meinem Windows-PC ausführen, aber wenn ich versuche, es auf einem Mac auszuführen, zeigt es nur das grundlegende Raster und ändert Farben oder nichts.
Jeder hatte ein Problem wie dieses oder kann helfen? Ich kann nicht herausfinden, warum es bei einem und nicht beim anderen funktionieren würde.
Dank
Hier ist mein Code, wenn das hilft (ich weiß es jetzt nicht elegant oder irgendetwas ist)
public class BattleshipFrame {
public static void main(String[] args) {
//creating JFrame
JFrame frame = new JFrame("Battleship");
frame.setLayout(new GridLayout(1, 3));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//creating User Panel
JPanel userpanel = new JPanel();
userpanel.setLayout(new GridLayout(10, 10));
userpanel.setSize(400, 400);
//creating JButton array
JButton[] button = new JButton[100];
//putting JButtons in User Panel
for (int i = 0; i < 100; i++) {
button[i] = new JButton();
button[i].setBackground(Color.BLUE);
userpanel.add(button[i]);
//changing colour of buttons when clicked
button[i].addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent ev) {
Object source = ev.getSource();
if (source instanceof Component) {
((Component) source).setBackground(Color.GREEN);
}
}
});
}
//creating computer panel
JPanel comppanel = new JPanel();
comppanel.setLayout(new GridLayout(10, 10));
comppanel.setSize(400, 400);
//putting JButtons in User Panel
for (int i = 0; i < 100; i++) {
button[i] = new JButton();
button[i].setBackground(Color.BLUE);
comppanel.add(button[i]);
//changing colour of buttons when clicked
button[i].addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent ev) {
Object source = ev.getSource();
if (source instanceof Component) {
((Component) source).setBackground(Color.GREEN);
}
}
});
}
//creating menu panel
JPanel menupanel = new JPanel();
//creating buttons for menu
JButton save = new JButton("Save");
JButton load = new JButton("Load");
save.setPreferredSize(new Dimension(100, 100));
load.setPreferredSize(new Dimension(100, 100));
//adding buttons to menu panel
menupanel.add(save);
menupanel.add(load);
//adding panels into frame
frame.add(userpanel, BorderLayout.WEST);
frame.add(menupanel, BorderLayout.CENTER);
frame.add(comppanel, BorderLayout.EAST);
frame.setVisible(true);
frame.setSize(2000, 1000);
}
}
Wie gesagt, es funktioniert perfekt auf meinem Windows-Eklipse, aber nicht auf dem Mac
Haben Sie versucht, Debugging auf dem Mac-Computer zu tun? –
[Warum kann "Kann mir jemand helfen?" Keine eigentliche Frage?] (Http://meta.stackoverflow.com/q/284236) – Andreas
Für was es wert ist, ist eine Reihe von Tasten wahrscheinlich eine schlechte Wahl hier; Versuchen Sie, das Board zu Ihrer eigenen Subklasse von JPanel zu machen. Sie können dann Mauslistener an die Komponente anhängen und die Mausklicks mithilfe von Mathematik an den x, y-Koordinaten abrufen. – Charlie