Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
package Pack1;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
public class Main extends JFrame implements ActionListener {
public String Text = "Buttun3";
private static final long serialVersionUID = 1L;
public static void main(String[] args){
new Main() .setVisible(true);
}
public Main(){
setTitle("Krieg");
setVisible(true);
setSize(1028, 768);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLayout(new FlowLayout());
JButton Knopf = new JButton("Der heilige Knopf Sensei Wang Pong");
Knopf.addActionListener(this);
add(Knopf);
JButton Knopf2 = new JButton("Selbstmord");
Knopf2.addActionListener(this);
add(Knopf2);
JButton Knopf3 = new JButton(Text);
add(Knopf3);
Knopf3.addActionListener(this);
}
public void actionPerformed(ActionEvent e) {
String name = e.getActionCommand();
if (name.equals("Der heilige Knopf Sensei Wang Pong")){
System.out.println("Ein Erdbeben kommt und Sensei Wang Pong kommt und Tötet dich");
Text = "Der heilige Knopf Sensei Wang Pong";
}
else if (name.equals("Selbstmord")){
System.out.println("Gräse");
Text = "Selbstmord";
}
}
}
Tut mir wegen den Namen sehr leid... Mir fiehlen keine ein da hab ich mein Freund auf dem TeamSpeak gefragt.Egal . Ich habe 2 Buttens beide funktionieren und einen dritten der mit der Variable Text bennant ist. Text = buttun3 dass soll sich zu "Der heilige Knopf Sensei Wang Pong" ändern wenn ich "Der heilige Knopf Sensei Wang Pong" drücke DOCH DAS TUT ES ABER NICHT. Jetzt bin ich truarig
Also dann würde ich folgendes machen:
- Den Button, der geändert werden soll, wird zu einer Instanzvariable. Also wenn dies der knopf3 sein soll, dann muss der halt als Instanzvariable definiert werden.
- wenn Du den Text des Buttons ändern willst, dann rufst Du auf dem Button die Methode setText auf. Also z.B. knopf3.setText("Der heilige Knopf Sensei Wang Pong");
Und der kleine Hinweis:
- Variablen bitte klein anfangen.
- Klassennamen fangen groß an
- Methoden fangen klein an.
Das ist bei Java so üblich und es macht Sinn, sich einfach daran zu halten. (Aber das nur als kleiner Hinweis.)
Danke Kneitzel für den hinweis mit der groß- und kleinschreibung das wollte ich immer mal wissen doch das was du da schreibst ist momentan zu hoch für mich. Das was Stein geschrieben hat hilft hier auch nicht. Habt ihr weitere Ideen.
package Pack1;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
public class Main extends JFrame implements ActionListener {
public String text = "Buttun3";
private static final long serialVersionUID = 1L;
public static void main(String[] args){
new Main() .setVisible(true);
}
public Main(){
setTitle("Krieg");
setVisible(true);
setSize(1028, 768);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLayout(new FlowLayout());
JButton knopf = new JButton("Der heilige Knopf Sensei Wang Pong");
knopf.addActionListener(this);
add(knopf);
JButton knopf2 = new JButton("Selbstmord");
knopf2.addActionListener(this);
add(knopf2);
JButton knopf3 = new JButton(text);
add(knopf3);
knopf3.addActionListener(this);
knopf3.setText(text);
}
public void actionPerformed(ActionEvent e) {
String name = e.getActionCommand();
if (name.equals("Der heilige Knopf Sensei Wang Pong")){
System.out.println("Ein Erdbeben kommt und Sensei Wang Pong kommt und Tötet dich");
text = "Der heilige Knopf Sensei Wang Pong";
}
else if (name.equals("Selbstmord")){
System.out.println("Gräse");
text = "Selbstmord";
}
}
}
Wenn du nicht einmal weißt was Instanzvariablen sind und wie man sie benutzt, dann ist es auch nicht möglich dir zu erklären wie das geht. Ich kann ja auch keinen erklären wie man Auto fährt, der nich einmal weiß wie er das Auto aufschliessen kann.
Man sollte von Anfang an richtig Swing programmieren.
1. Man reiht seine Swing-Applikation in den EventQueue ein (SwingUtilities.invokeLater)
2. Composition over Inheritance - Wenn man die Funktionalität von JFrame nicht erweitern will, dann einfach verwenden und nicht erweitern
3. ContentPane von JFrame ist ungewiss, darum sollte man eine eingene leichtgewichtige Componente (JPanel: mainPanel) als Hauptzeichengebiet verwenden und zum frame hinzufügen
4. ActionListener können zu 90% anonym sein und sollen es sogar auch, wenn es keinen State erfordert
5. frame erst zum visible setzen, wenn alles arrangiert wurde
Java:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
public class Test {
public static void main(String... args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new Test();
}
});
}
public Test() {
JFrame frame = new JFrame("Krieg");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(1028, 768);
frame.setLocationRelativeTo(null);
JPanel mainPanel = new JPanel();
JButton btn3 = new JButton(" ");
JButton btn1 = new JButton("Der heilige Knopf Sensei Wang Pong");
btn1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("Ein Erdbeben kommt und Sensei Wang Pong kommt und Tötet dich");
btn3.setText("Der heilige Knopf Sensei Wang Pong");
}
});
JButton btn2 = new JButton("Selbstmord");
btn2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("Gräse");
btn3.setText("Selbstmord");
}
});
mainPanel.add(btn1);
mainPanel.add(btn2);
mainPanel.add(btn3);
frame.add(mainPanel);
frame.setVisible(true);
}
}
@JStein52 das meiste sollte man schon von Anfang an hören. MMn sollte man so oder so Grundlagen, dann OOP-Grundlagen und dann erst UI programmieren. Dabei soll das Verständnis des vorher gelernten gefestigt und auch angewendet werden.
Nur weil in den Lehrbüchern von JFrame abgeleitet wird (damit der Code um ein paar Zeichen kürzer wird) heißt das noch lange nicht, dass man es auch machen sollte (OOP-Grundlagen). Da ich es ja nicht nur textuell beschrieben habe, sondern auch das Beispiel geliefert habe, sollte das also kein Problem mehr darstellen.
Ich weiss nicht ob du oben gelesen hast: es ist ein 13-jähriger junger Mann der gerade ausprobiert. Er macht es wahrscheinlich mit einem Lehrbuch in dem es nun mal so steht. Du hast ja in der Theorie recht aber ich glaube mit den vielen Begriffen die du eingeführt hast überforderst du ihn im Moment komplett.
Also Alter ist für mich keine Ausrede, denn mit 13 habe ich schon Turbo-Pascal, VB gelernt und damals gabs nicht einfach so das "Internet" um was nachzuschlagen. Das ist heute um einiges leichter, weil man eben solche Begriffe nachschlagen kann und für alles gibt es zig Tutorials.
Wegen der Überforderung: Wenn man die Basis hat, dann sollte der Rest kein Problem sein, darum immer am Anfang beginnen und nicht schon in der Mitte.