Button in BlueJ erstellen?
Hi,
Haben im Informatik Unterricht grade angefangen ein Zeichenprogramm zu programmieren (wie gesagt mit BlueJ), habe mich im Internet ein bisschen schlau gemacht wie man einen Button hinzufügen könnte bin aber nicht fündig geworden(bis auf den Code am Ende welcher allerdings nur Massen an Fehlermeldungen hervorgebracht hat).
Bis jetzt habe ich Farbwechsel, Radierer usw per Tastatur Eingabe ausführen lassen, per Knopf fände ich es viel Angenehmer. (Kann meinen bisherigen Code auch gerne hochladen).
Habt ihr eine Ahnung wie man nun einen Button hinzufügt, am Besten direkt in das Zeichenfenster.
import java.swing.*;
public class blablabla extends JFrame{
private JPanel main;
private JButton button;
blablabla(){
main = new JPanel();
button = new JButton("button");
button.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent evt){ buttonActionPerformed(evt);}});
main.add(button);
}
private void buttonActionPerformed(ActionEvent e){
Hier rein, was passieren soll, wenn der Button gedrückt wird
}
}
1 Antwort
Du solltest dich zuerst darauf festlegen, womit du überhaupt für deine grafische Oberfläche arbeiten möchtest. Du wirst ja sicherlich bereits irgendwelche vorgefertigten Klassen benutzen, um zu zeichnen. Vielleicht hast du da auch schon etwas, um Buttons anzulegen.
In Schulen wird beispielsweise SaS (oder eine modifizierte Version davon) genutzt, wo es eine Button- oder Knopf-Komponente gibt.
Dies nun einfach mit einem anderen Toolkit mischen zu wollen (der Code, den du dir da herausgesucht hast, nutzt bspw. das Swing Toolkit), dürfte sich schnell als ungünstige Entscheidung erweisen. Jedes Toolkt hat seine eigenen Komponenten und Strategien, wie die grafische Oberfläche gezeichnet wird.
Zu einer Lösung mit Swing:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class MyFirstGui {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
JFrame window = new JFrame("My window");
JPanel main = new JPanel();
JButton button = new JButton("Click me");
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent evt) {
// do something ...
}
});
main.add(button);
window.add(main);
window.pack();
window.setVisible(true);
}
});
}
}
Dies würde dir (im Event Dispatch Thread) soweit ein Fenster mit einem Button erstellen. In der actionPerfomed-Methode wird das aufgeführt, was bei Klick auf den Button passieren soll. Zusätzlich bräuchtest du nun noch eine Zeichenfläche (vielleicht ein weiteres JPanel, dessen paintComponent-Methode überschrieben wird.
Als Einstieg sollte dir meine Antwort von hier weiterhelfen. Beachte, dass das Schlüsselwort var nur in neueren Java-Versionen (ab JDK 10) verfügbar ist.
Die objektorientierten Konzepte sollten dir soweit bereits bekannt sein und als Nachschlagewerke können die API Referenz (z.B. zur Graphics-Klasse) sowie die Oracle Tutorialsserie (Beispiel: Layouts) herhalten. Von YouTube-Videos möchte ich gleich im Vorfeld deutlich abraten, denn bei denen stößt du zumeist auf solche, die eher zeigen, wie man es eben nicht machen sollte.
Danke für die Antwort, allerdings habe ich und ein Freund mit etwas besseren Java Kenntnissen als ich das Problem schon gelöst. (Er hat eine eigene Maus Klasse erstellt die mit den Buttons kommunizieren kann). Aber egal jetzt haben andere mit dem gleichen Problem eine Antwort ^^