Hi, ich schreibe ein Spiel und zeichne deswegen alles "selbst" in der paintComponent. Ich möchte trotzdem Buttons benutzen. Jetzt möchte ich aber nicht jedes Mal die Buttons hinzufügen müssen (d.h. nicht jeden Schleifendurchlauf). Die canvas-Methode ist sozusagen meine Zeichenmethode. Hat Gründe, warum das nicht direkt in der paintComponent-Methode ist, denkt sie euch einfach wie die paintComponent.
Java:
package modules.menu;
import java.awt.Color;
import java.awt.Font;
import java.awt.Rectangle;
import java.awt.RenderingHints;
import java.util.ArrayList;
import javax.swing.JButton;
import engine.GUI;
public class MenuGUI extends GUI {
public MenuGUI() {
super(900, 600);
}
private static final long serialVersionUID = 1L;
@Override
public void canvas() {
Rectangle bounds = g.getDeviceConfiguration().getBounds();
g.setColor(Color.WHITE);
g.setFont(new Font("Adobe Arabic", Font.PLAIN, 20));
g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
ArrayList<String> text = new ArrayList<String>();
text.add("AAA");
text.add("BB");
text.add("C");
text.add("C");
text.add("BB");
text.add("AAA");
text.add("AAA");
// adjust if necessary
final int param1 = 30;
final int param2 = -14;
for (int i = 0; i < text.size(); i++) {
g.drawString(text.get(i), bounds.width / 2 - g.getFontMetrics().stringWidth(text.get(i)) / 2, param2
+ bounds.height / 2 + (bounds.height / 2 - param1 * text.size()) * (i - (text.size() / 2)) + 25);
}
// hier füge ich den Button hinzu, nur unnötigerweise jeden Schleifendurchlauf . . .
JButton j = new JButton();
j.setBounds(0, 0, 500, 500);
j.addActionListener(inputManager);
add(j);
}
}