Stop button bei Gui

nag

Mitglied
Moin Moin
kann mir vielleicht jemanden helfen ich bin Anfänger .ich bin dabei ein Programm für das Ozean mit Fischen zu programmieren . bei drück den button Start sollte die Fische sich bewegen. ich habe folgende Problem bei Start ,die Fischen bewegen sich aber die andere Button wie stop ,delete funktioniert nicht mehr und ich weiß nicht wo den Fehler liegt . danke im voraus
hier ist mein Code :

package infpp.oceanlife;

//import infpp.oceanlife.OceanlifeView.MoveThread;
//import infpp.oceanlife.GuiOceanlife.PaintThread;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io_ObjectInputStream;
import java.io_ObjectOutputStream;
import java.io_OutputStream;
import java.util.LinkedList;

import javax.swing.JOptionPane;

public class OceanlifeController
{
private OceanlifeView view ;
private Ocean ocean;
//private OceanModel_Model;

public OceanlifeController(OceanlifeView view,Ocean ocean)
{
this.view = view;
this.ocean= ocean;

addListener();
addKeyListener();

}

private void addListener(){
this.view.setQuittButtonListener(new ActionListenerEx());
this.view.setInsertButtonListener(new ActionListenerInsert());
this.view.setDeleteButtonListener( new ActionListenerDelete());
this.view.setSaveButtonListener(new ActionListenerSave());
this.view.setLoadButtonListener(new ActionListenerLoad());
this.view.setStepButtonListener(new ActionListenerStep());
this.view.setGoButtonListener(new ActionListenerGo());
this.view.setStopButtonListener(new ActionListenerStop());

}

private void addKeyListener(){
this.view.setxValueKeyListener(new TextKeyListener());
this.view.setyValueKeyListener( new TextKeyListener());
}



/*
* thread to paint while running
*/
class PaintThread extends Thread {

@Override
public void run() {
while (view.running) {
synchronized (ocean.getOceanObjects()) {
try {
Thread.sleep(25);
} catch (Exception e) {
e.printStackTrace();
}
view.repaint();
}
}
}
}

/*
* thread to make the motion of the objects
*/
class MoveThread extends Thread {

public OceanObject object;

MoveThread(OceanObject object) {
this.object = object;
}

@Override
public void run() {
while (view.running) {
try {
Thread.sleep(25);
} catch (Exception e) {
e.printStackTrace();
}
if (object.checkClass().equals("Fish")) {
try {
// checking which direction the fish is headed
if (object.getDirectionX() == 2) {
object.move(object, view.imgFishRight, ocean.getDepth(),
ocean.getWidth());
} else {
object.move(object, view.imgFishLeft, ocean.getDepth(),
ocean.getWidth());
}
} catch (Exception e) {
}
} else if (object.checkClass().equals("Stone")) {
try {
object.move(object, view.imgStone, ocean.getDepth(),
ocean.getWidth());
} catch (Exception e) {
}
} else if (object.checkClass().equals("Plant")) {
try {
object.move(object, view.imgPlant, ocean.getDepth(),
ocean.getWidth());
} catch (Exception e) {
}
} else if (object.checkClass().equals("Bubble")) {
try {
object.move(object, view.imgBubble, ocean.getDepth(),
ocean.getWidth());
} catch (Exception e) {
// deleting the bubble if it reached the top
ocean.oceanObjects.remove(object);
view.deleteList.removeItem(object);
}
}

}
}
}

/*
* actionlistener for the goButton
*/
class ActionListenerGo implements ActionListener {

public void actionPerformed(ActionEvent event) {
if (!view.running) {
view.running = true;
// starting the threads for each object
for (int i = 0; i < ocean.getOceanObjects().size(); i++) {
OceanObject object = ocean.getOceanObjects().get(i);
MoveThread move = new MoveThread(object);
move.start();
}
// starting one thread to paint the objects
PaintThread paint = new PaintThread();
paint.start();
}
}
}

/*
* actionlistener for the stopButton
*/
class ActionListenerStop implements ActionListener {

public void actionPerformed(ActionEvent event) {
view.running = false;
}
}

/*
* actionlistener for the stepButton
*/
class ActionListenerStep implements ActionListener {

public void actionPerformed(ActionEvent event) {
if (!view.running) {
for (int i = 0; i < ocean.getOceanObjects().size(); i++) {
OceanObject object = ocean.getOceanObjects().get(i);
// checking the type of the current object
if (object.checkClass().equals("Fish")) {
Fish ob = (Fish) object;
// checking direction of object
if (object.getDirectionX() == 2) {
ob.move(ob,view.imgFishRight, ocean.getDepth(),
ocean.getWidth());
} else {
ob.move(ob,view. imgFishLeft, ocean.getDepth(),
ocean.getWidth());
}
} else if (object.checkClass().equals("Plant")) {
Plant ob = (Plant) object;
ob.move(ob, view.imgPlant, ocean.getDepth(),
ocean.getWidth());
} else if (object.checkClass().equals("Stone")) {
Stone ob = (Stone) object;
ob.move(ob, view.imgStone, ocean.getDepth(),
ocean.getWidth());
} else if (object.checkClass().equals("Bubble")) {
Bubble ob = (Bubble) object;
try {
ob.move(ob, view.imgBubble, ocean.getDepth(),
ocean.getWidth());
} catch (Exception e) {
// deleting the object
ocean.oceanObjects.remove(object);
view.deleteList.removeItem(object);
}
}
view.repaint();
}
}
}
}

/*
* keylistener to prevent users from typing others characters than letters
*/
class TextKeyListener extends KeyAdapter {

@Override
public void keyTyped(KeyEvent e) {
char c = e.getKeyChar();
if (!view.running) {
if (!((Character.isDigit(c) || (c == KeyEvent.VK_BACK_SPACE) || (c == KeyEvent.VK_DELETE)))) {
e.consume();
}
} else {
e.consume();
}
}
}

/*
* actionlistener for the loadButton
*/
class ActionListenerLoad implements ActionListener {

public void actionPerformed(ActionEvent event) {
if (!view.running) {
try {
// deleting the old ocean
ocean.oceanObjects.clear();
view.deleteList.removeAllItems();
view.repaint();
// making new inputstream
FileInputStream fis = new FileInputStream("save.txt");
ObjectInputStream ois = new ObjectInputStream(fis);
// setting new list of objects
@SuppressWarnings("unchecked")
LinkedList<OceanObject> list = (LinkedList<OceanObject>) ois
.readObject();
ocean.setOceanObjects(list);
for (int i = 0; i < list.size(); i++) {
view.deleteList.addItem(list.get(i));
}
ois.close();
view.repaint();
} catch (Exception e) {
JOptionPane.showMessageDialog(null,
"The ocean could not be loaded!", "Error",
JOptionPane.ERROR_MESSAGE);
}
}
}
}

/*
* actionlistener for the saveButton
*/
class ActionListenerSave implements ActionListener {

public void actionPerformed(ActionEvent event) {
if (!view.running) {
try {
OutputStream os = new FileOutputStream("save.txt");
ObjectOutputStream oos = new ObjectOutputStream(os);
oos.writeObject(ocean.getOceanObjects());
oos.close();
} catch (IOException e) {
JOptionPane.showMessageDialog(null,
"The ocean could not be saved.", "Warning",
JOptionPane.WARNING_MESSAGE);
}
}
}
}

/*
* actionlistener for the exitButton
*/
class ActionListenerEx implements ActionListener {

public void actionPerformed(ActionEvent e) {
while (!view.running) {
System.exit(0);

}
}
}

/*
* actionlistener for the deleteButton
*/
class ActionListenerDelete implements ActionListener {

public void actionPerformed(ActionEvent event) {
if (!view.running) {
try {
// deleting the selected object
ocean.deleteOceanObject(view.deleteList.getSelectedIndex());
view.deleteList.removeItem(view.deleteList.getSelectedItem());
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "No Objects existing!",
"Error", JOptionPane.ERROR_MESSAGE);
}
view.repaint();
view.xValue.setText("");
view.yValue.setText("");
}
}
}

/*
* actionlistener for the insertButton
*/
class ActionListenerInsert implements ActionListener {

public void actionPerformed(ActionEvent event) {
if (!view.running) {
try {
// parsing the coordinates
int xvalue = Integer.parseInt(view.xValue.getText());
int yvalue = Integer.parseInt(view.yValue.getText());
// parsing the selected object
Object listObject = view.insertList.getSelectedItem();
String nameOfObject = (String) listObject;
// checking which objects has to be created
if (nameOfObject.equals("Fish")) {
try {
// check position of object and add to the list
Fish object = new Fish(xvalue, yvalue);
// setting direction of the fish
object.setDirectionX((int) (Math.random() * 2 + 1));
object.setDirectionY((int) (Math.random() * 2 + 1));
ocean.checkCollision(object,
ocean.getOceanObjects(), view.imgFishRight);
ocean.addOceanObject(object,view.imgFishRight);
view.deleteList.addItem(object);
} catch (Exception e) {
JOptionPane
.showMessageDialog(
null,
"Object is either outside the ocean or its blocked by an already existing object!",
"Warning",
JOptionPane.WARNING_MESSAGE);
}
} else if (nameOfObject.equals("Plant")) {
try {
// check position of object and add to the list
Plant object = new Plant(xvalue, yvalue);
ocean.checkCollision(object,
ocean.getOceanObjects(),view.imgPlant);
ocean.addOceanObject(object, view.imgPlant);
view.deleteList.addItem(object);
} catch (Exception e) {
JOptionPane
.showMessageDialog(
null,
"Object is either outside the ocean or its blocked by an already existing object!",
"Warning",
JOptionPane.WARNING_MESSAGE);
}
} else if (nameOfObject.equals("Stone")) {
try {
// check position of object and add to the list
Stone object = new Stone(xvalue, yvalue);
ocean.checkCollision(object,
ocean.getOceanObjects(),view.imgStone);
ocean.addOceanObject(object, view.imgStone);
view.deleteList.addItem(object);
} catch (Exception e) {
JOptionPane
.showMessageDialog(
null,
"Object is either outside the ocean or its blocked by an already existing object!",
"Warning",
JOptionPane.WARNING_MESSAGE);
}
} else {
try {
// check position of object and add to the list
Bubble object = new Bubble(xvalue, yvalue);
ocean.checkCollision(object,
ocean.getOceanObjects(), view.imgBubble);
ocean.addOceanObject(object, view.imgBubble);
view.deleteList.addItem(object);
} catch (Exception e) {
JOptionPane
.showMessageDialog(
null,
"Object is either outside the ocean or its blocked by an already existing object!",
"Warning",
JOptionPane.WARNING_MESSAGE);
}
}
view.xValue.setText("");
view.yValue.setText("");
view.repaint();
} catch (NumberFormatException e) {
JOptionPane.showMessageDialog(null,
"Plese insert Integer as values.", "Warning",
JOptionPane.WARNING_MESSAGE);
}
}
}
}


}
 
Zuletzt bearbeitet:

dzim

Top Contributor
a) Bitte in die entsprechenden [ JAVA ][/ JAVA ] (natürlich ohne Leerzeichen zwischen den eckigen Klammern)
b) Sind dir die Begriffe "Rechtschreibung" und "Grammatik" ein Begriff? Oder wenigstens "Interpunktion"? :-( Richtig verwendet, kann vor allem die letztere viel Sinn in Texten stifften... Danke...
 

kaoZ

Top Contributor
kann mir vielleicht jemanden helfen ich bin Anfänger

Ich kann immer nicht nachvollziehen warum ich dann ausgerechnet mit einem der komplexesten Themen anfangen muss, hier eindeutig GUI Programmierung.....
(vorallem dann auch noch dirket nen Pattern / und nen GameLoop :D )

Wie weit ist dein Kenntnisstand ?
Sitzen die Grundlagen ?
War des ein GUI-Builder oder hast du es von Hand geschrieben ?
Oder ganz vorsichtig :Hast du es überhaupt selbst geschrieben ?
Was genau ist dein konkretes Problem ?

Start ,die Fischen bewegen sich aber die andere Button wie stop ,delete funktioniert nicht mehr und ich weiß nicht wo den Fehler liegt . danke im voraus
hier ist mein Code :

Ganz grobe Einschätzung , du machst alles im EDT, sprich du blockierst deine Gui, obwohl ich da schon beim drüberschauen einen extra MoveThread gesehen habe.
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Start-/ Stop-Button Problem AWT, Swing, JavaFX & SWT 2
B Play Button auch als Stop Button benutzen, MP3 Player AWT, Swing, JavaFX & SWT 7
X Audio Player: Fenster mit Play/Stop-Button erstellen, mit JSlider Lautstärke ändern AWT, Swing, JavaFX & SWT 6
J Compiler in der JavaFX stop() Methode warten lassen bist eine Aktion in einer anderen Scene gemacht AWT, Swing, JavaFX & SWT 5
K Event Handling 2 Buttons und Thread stop AWT, Swing, JavaFX & SWT 3
C Button ActionListener funktioniert nicht AWT, Swing, JavaFX & SWT 1
G Button auswerten und ausgeben ob richtig oder falsch AWT, Swing, JavaFX & SWT 1
D Button und Textfeld Darstellung AWT, Swing, JavaFX & SWT 3
H Button / Design Ideen AWT, Swing, JavaFX & SWT 2
Mojo7310 Ändern von Text in JLabel mit einem Button AWT, Swing, JavaFX & SWT 11
B JavaFX Sprachumschaltung mit Button auf der HMI AWT, Swing, JavaFX & SWT 6
T TableView Button onAction AWT, Swing, JavaFX & SWT 3
I JTable mit einem Button zu einer Detail Seite springen AWT, Swing, JavaFX & SWT 4
JavaBeginner22 Button Hilfe AWT, Swing, JavaFX & SWT 0
Jose05 JavaFX: eigene FXML-Datei für einen Button AWT, Swing, JavaFX & SWT 3
J Button-Keyboard Interaktion AWT, Swing, JavaFX & SWT 7
EinNickname9 Swing Button mittig positionieren AWT, Swing, JavaFX & SWT 4
L actionListener für Button AWT, Swing, JavaFX & SWT 97
melaniemueller Verschiebung eines Fensters über Button AWT, Swing, JavaFX & SWT 27
I JavaFX Hover-Effekt bei Button AWT, Swing, JavaFX & SWT 11
Zeppi Swing Button soll Spiel zurücksetzen AWT, Swing, JavaFX & SWT 5
G Button Strings Effektiver setzen AWT, Swing, JavaFX & SWT 3
CptK windowClosed() nur aufrufen, wenn Fenster nicht über Button geschlossen wird AWT, Swing, JavaFX & SWT 1
W Zweites/neues Fenster durch Button öffnen AWT, Swing, JavaFX & SWT 6
B Text mit Absatz + OK-Button, der Fenster wieder schließt AWT, Swing, JavaFX & SWT 7
T Button für GUI programmieren AWT, Swing, JavaFX & SWT 1
N Bilder auf Button einfügen und mehrmals ändern (ein Button, mehrere ActionListener) AWT, Swing, JavaFX & SWT 2
W JavaFX Button - optimale Breite berechnen AWT, Swing, JavaFX & SWT 1
L Swing Button Farbe ändern/wechseln AWT, Swing, JavaFX & SWT 2
P Button simpler random auf einem JPanel verteilen? AWT, Swing, JavaFX & SWT 3
S JavaFx Zufallsfarbe beim Button-Klick AWT, Swing, JavaFX & SWT 22
N Aufruf einer anderen Klasse durch Button ActionListener AWT, Swing, JavaFX & SWT 2
VPChief Swing Eclipse: Nach Exportieren, Button funktioniert nicht mehr AWT, Swing, JavaFX & SWT 26
Z Button bewegen und Plätze tauschen AWT, Swing, JavaFX & SWT 4
Z Swing Button anklicken und bewegen AWT, Swing, JavaFX & SWT 2
K JavaFX Button verbinden AWT, Swing, JavaFX & SWT 6
Z Mit einem Button einen anderen Button Triggern AWT, Swing, JavaFX & SWT 3
M JavaFX Button action abhängigkeit von Tab AWT, Swing, JavaFX & SWT 1
A Swing JTextField an Button übergeben für Popup-Fenster funktioniert nicht AWT, Swing, JavaFX & SWT 3
H Eigener Dialog mit Rückgabe -> Warten auf Button AWT, Swing, JavaFX & SWT 3
F JLabel mit ImageIcon per Button bewegen AWT, Swing, JavaFX & SWT 4
L Button Funktion zuweisen in WindowBuilder AWT, Swing, JavaFX & SWT 22
A Button mit Speicher-Funktion AWT, Swing, JavaFX & SWT 8
krgewb Swing Icon von Button AWT, Swing, JavaFX & SWT 12
J Schriftart über einen Button ändern AWT, Swing, JavaFX & SWT 1
Bluedaishi JavaFX Button Image aus Datenbank AWT, Swing, JavaFX & SWT 13
CptK Swing Button: ImageIcon unter den Text AWT, Swing, JavaFX & SWT 4
Ø Swing Button in anderer Klassen ausführen AWT, Swing, JavaFX & SWT 6
X Neues Fenster mit Button öffnen und bearbeiten AWT, Swing, JavaFX & SWT 4
cool_brivk24 Swing Button Farbe ändern AWT, Swing, JavaFX & SWT 2
K JavaFX TextInputDialog Button Text ändern AWT, Swing, JavaFX & SWT 1
L ActionListener zu Button in Panel hinzufügen AWT, Swing, JavaFX & SWT 10
J Aus welchen Grund wird der Button nicht angezeigt im GridPane? AWT, Swing, JavaFX & SWT 1
S GUI Schließen Button auf der linken Seite AWT, Swing, JavaFX & SWT 2
J Swing Bild in Button AWT, Swing, JavaFX & SWT 11
das_leon AWT Button Design ändern AWT, Swing, JavaFX & SWT 5
J Thread per Button starten AWT, Swing, JavaFX & SWT 10
E Button verschwindet nachdem ein Rechteck gezeichnet wurde AWT, Swing, JavaFX & SWT 5
G JComboBox: Arrow-Button permanent anzeigen AWT, Swing, JavaFX & SWT 4
emma_louisa JavaFX MenuBar Zweitfenster; bei Button "Abbrechen" nur das Zweitfenster schließen AWT, Swing, JavaFX & SWT 2
I JavaFX: "globaler Button" AWT, Swing, JavaFX & SWT 0
M JavaFX ActionEvent Button AWT, Swing, JavaFX & SWT 6
S JavaFx - Button ActionEvent Probleme AWT, Swing, JavaFX & SWT 3
J Button lässt sich nicht auf dem JPanel verschieben AWT, Swing, JavaFX & SWT 5
Q AWT TicTacToe Image auf Button hinzufügen AWT, Swing, JavaFX & SWT 5
H JavaFX - Button und Text - Falsche Darstellung AWT, Swing, JavaFX & SWT 3
S Swing Problem mit Button und ActionListener AWT, Swing, JavaFX & SWT 5
it_is_all Swing Button, ComboBox,... -- Unterschied: NetBeans Design <-> Ausführung AWT, Swing, JavaFX & SWT 2
B FXML GUI - Button ausblenden AWT, Swing, JavaFX & SWT 1
it_is_all JPanel verschwindet nach Button-Klick AWT, Swing, JavaFX & SWT 2
L JavaFX button über andere Klasse ändern AWT, Swing, JavaFX & SWT 7
L Suchergebnisse variabel mit Button anzeigen lassen AWT, Swing, JavaFX & SWT 3
K über Button andere Java Klasse aufrufen AWT, Swing, JavaFX & SWT 15
J Event Handling Button "enablen" wenn Eingaben in Textfeldern korrekt sind AWT, Swing, JavaFX & SWT 1
Ksanatos Swing Bild (.jpg) einlesen und per Button wechseln AWT, Swing, JavaFX & SWT 9
U JavaFX Wechsel der Scene nach betätigen eines Button AWT, Swing, JavaFX & SWT 2
V JavaFX Button Controller Fehler, trotz Erfolg in einem anderem Code? AWT, Swing, JavaFX & SWT 7
E Fehler bei Button AWT, Swing, JavaFX & SWT 1
A Swing Tabelle wird bei Betätigung des Button nicht befüllt AWT, Swing, JavaFX & SWT 17
C Applet Zeichnen über Button-Click AWT, Swing, JavaFX & SWT 13
GreenTeaYT Button funktioniert nicht für Ein-und Auszahlungen? AWT, Swing, JavaFX & SWT 8
MaxG. Swing Farbe von Button beim drücken ändern AWT, Swing, JavaFX & SWT 4
S per Button Variableninhalt aus anderer Klasse holen AWT, Swing, JavaFX & SWT 3
A Swing GUI - Button soll Frame verändern AWT, Swing, JavaFX & SWT 4
T Frage zu GUI - Button soll Objekt erfassen AWT, Swing, JavaFX & SWT 2
MaxG. Swing Bild Button AWT, Swing, JavaFX & SWT 7
P Jframe Bild einfügen, Hintergrund Farbe ändern, und Button schrift Größe ändern AWT, Swing, JavaFX & SWT 2
A Nach klick auf Button neuen Inhalt im gleichen Fenster AWT, Swing, JavaFX & SWT 3
N Swing Abfrage durch JTextField nach Button betätigung AWT, Swing, JavaFX & SWT 3
H JavaFX via .fxml einen abgeleiteten Button erstellen... AWT, Swing, JavaFX & SWT 4
T JavaFX Button als Runnable AWT, Swing, JavaFX & SWT 4
OlafHD JPasswordField mit Button eingeben AWT, Swing, JavaFX & SWT 4
B JavaFX Wie programmiere ich hier einen "Weiter" Button? AWT, Swing, JavaFX & SWT 11
S AWT Daten über TextField und Button in array speichern AWT, Swing, JavaFX & SWT 5
D JavaFX Button Links- und Rechtsklick? AWT, Swing, JavaFX & SWT 1
Thallius Button von JDatePicker customizen? AWT, Swing, JavaFX & SWT 0
K eigener button in swing AWT, Swing, JavaFX & SWT 3
C Durch klicken von Button neues Fenster oeffnen AWT, Swing, JavaFX & SWT 18
R Button Aktion AWT, Swing, JavaFX & SWT 3
X Javafx button per enter auslösen AWT, Swing, JavaFX & SWT 5

Ähnliche Java Themen

Neue Themen


Oben