Ich versuche eine Online-Version des Brettspiels RISK zu programmieren. und ich möchte JButtons auf dem Board platzieren. Also möchte ich JButtons auf einigen Bildern, aber ich kann es nicht zum Laufen bringen. Hier ist mein Code:Wie integriert man JButtons in Grafiken?
public void main(String[] args){
JFrame frame = new JFrame("RISK");
frame.setSize(800, 600);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel();
panel.setLayout(null);
frame.add(panel);
JButton button = new JButton("test");
button.setBounds(100, 100, 150, 150);
panel.add(button);
frame.setVisible(true);
frame.add(new graphics());
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
try{
BufferedImage board = ImageIO.read(new File("board.jpg"));
}catch(IOException e){}
g.drawImage(board, 0, 0, null);
}
Vielen Dank im Voraus. - Ihre Antwort muss nicht auf diesen spezifischen Code verweisen, nur ein allgemeines Beispiel mit Grafiken und JButtons wäre erstaunlich!
* "Brettspiel RISIKO" * Wie [dies] (http://tformers.net/i/r/Risk_M/RiskBoard.JPG)? Wenn dies keinen Aspekt des gewünschten Designs enthält, fügen Sie diese zitierten Wörter als Suchbegriffe in Ihrer bevorzugten Suchmaschine hinzu, die die Bildsuche unterstützt, und finden Sie eine, die dies tut. Es wäre sehr hilfreich, die erforderliche GUI zu erklären. –
1) Für eine bessere Hilfe, post ein [SSCCE] (http://sscce.org/). 2) 'paintComponent (Grafik g) {.. BufferedImage board = ImageIO.read (..' Versuchen Sie nicht, Bilder in den Paint-Methoden zu lesen, und blockieren Sie nicht die Paint-Methode mit lang laufenden Aufgaben. Das Bild sollte sein Lesen Sie vorher und dann als Klassenattribut zwischengespeichert 3) 'frame.setSize (800, 600);' Legen Sie die bevorzugte Größe der Komponenten (falls erforderlich) und nicht die Größe des Rahmens fest. 4) 'button.setBounds (100, 100, 150, 150);' ** Verwende Layout-Manager! ** –
5) 'frame.add (new graphics());' Bitte lerne die [Java-Namenskonventionen] (http : //java.sun.com/docs/books/jls/second_edition/html/names.doc.html#73307) (speziell der Fall, der für die Namen verwendet wird) für Klassen-, Methoden- und Attributnamen und verwenden Sie ihn konsistent. 6) 'catch (IOException e) {}' Tu das nicht, besonders in Code, der 'nicht funktioniert'. Verwenden Sie 'catch (IOException e) {e.printStacktrace(); } 'stattdessen. 7) 'g.drawImage (board, 0, 0, null);' Ich wette, dass ein 'graphics' Objekt ein' ImageObserver' ist. Das sollte 'g.drawImage (board, 0, 0, this);' –