object doorgeven in java

Status
Niet open voor verdere reacties.

guevara

Gebruiker
Lid geworden
4 jan 2003
Berichten
172
hello allemaal
ik heb een vraag . in de classe KaartFrame wordt ButtonListener gemaakt. die krijgt een object Kaart en twee JTextField mee. Kaart wordt gewijzigd in ButtonListener en terug gegeven aan KaartFrame . dat laatste lukt me niet. ik heb geprobeerd om in "public void actionPerformed(ActionEvent e) " void te vervangen door Kaart maar dat is niet gelukt.
dus de vraag is hoe geef ik een object (Kaart) door van een classe (ButtonListener ) naar een andere(KaartFrame ) ?
alvast bedankt

import java.awt.event.*;
import javax.swing.*;

class ButtonListener implements ActionListener{
JTextField first, second;
Kaart kaart = new Kaart();
public ButtonListener(JTextField first, JTextField second,Kaart kaart){
this.first= first;
this.second=second;
this.kaart = kaart;
}

public void actionPerformed(ActionEvent e){
int X= (int)Double.parseDouble(first.getText().trim());
int Y= (int)Double.parseDouble(second.getText().trim());
String naam = "P"+ Plaats.getAantalPlaatsen();
Plaats plaats = new Plaats(X,Y,naam);
kaart.add(plaats);
KaartTekener kt = new KaartTekener(kaart);
}
}
 
Je kan in je KaartFrame een methode

public void setKaart(Kaart nwKaart){
kaart = nwKaart;
}

maken en die aanroepen in ActionPerformed, dan moet je ButtonListener echter KaartFrame wel kennen, die moet je dan dus meegeven.
Of een aparte functie in je ButtonListener getKaart maken die de kaart teruggeeft, die methode laat je dan op het juiste moment door KaartFrame aanroepen.

De void van ActionPerformed kan je niet veranderen in een ander object omdat je de Interface ActionListener implementeert. Die verwacht nou juist dat die methode het returntype void heeft.
 
bedankt nteusink voor je reactie.
nu heb ik nog een vraag hoe kan ik kaartFrame mee geven? ik kan een object mee geven of een variabele maar een class?

hier is mijn kaartFrame
import java.awt.*;
import javax.swing.*;

public class KaartFrame{
public KaartFrame(){
Kaart kaart = new Kaart();

JFrame frame = new JFrame("opdracht1");
Container pane = frame.getContentPane();
pane.setLayout(null);

JLabel labelX = new JLabel("X");
labelX.setBounds(25, 50, 100, 30);
pane.add(labelX);

JLabel labelY = new JLabel("Y");
labelY.setBounds(150, 50, 100, 30);
pane.add(labelY);


JTextField textX = new JTextField();
textX.setBounds(25, 80, 100, 30);
pane.add(textX);

JTextField textY = new JTextField();
textY.setBounds(150, 80, 100, 30);
pane.add(textY);

JButton voegPlaatsToe = new JButton("voeg plaats toe");
voegPlaatsToe.setBounds(25, 125, 225, 30);
pane.add(voegPlaatsToe);
ButtonListener buttonListenerVoegPlaatsToe=
new ButtonListener(textX,textY, kaart);
voegPlaatsToe.addActionListener(buttonListenerVoegPlaatsToe);


JPanel groen= new JPanel();
groen.setBackground(Color.GREEN);
groen.setBounds(10,10, 250,160);
pane.add(groen);


JComboBox box1 = new JComboBox();
box1.setBackground(Color.WHITE);
//for (int i=0; i<kaart.getAantalPlaatsen();i++){
// box1.addItem(kaart.plaatsNamen());
//}

box1.addItem("alfa");
box1.addItem("omega");
box1.setBounds(30, 200, 90, 30);
pane.add(box1);

JComboBox box2 = new JComboBox();
box2.setBackground(Color.WHITE);
box2.addItem("alfa");
box2.addItem("omega");
box2.setBounds(140, 200, 90, 30);
pane.add(box2);

JLabel labelAfstand = new JLabel("afstand");
labelAfstand.setBounds(30, 250, 60, 30);
pane.add(labelAfstand);

JTextField textAfstand = new JTextField();
textAfstand.setBounds(110,250,125,30);
pane.add(textAfstand);
TextFieldListener textFieldListenerAfstand = new TextFieldListener();
textAfstand.addActionListener(textFieldListenerAfstand);


JButton voegWegToe = new JButton("voeg weg toe");
voegWegToe.setBounds(30, 310, 220, 30);
pane.add(voegWegToe);

JPanel blauw= new JPanel();
blauw.setBackground(Color.CYAN);
blauw.setBounds(10,185, 250,175);
pane.add(blauw);


////////////////////////////////////////////////////////
Plaats p1= new Plaats(100,14,"p1");
Plaats p2= new Plaats(250,200,"p2");
Plaats p3= new Plaats(150,350,"p3");
Plaats p4= new Plaats(200,200,"p4");
Plaats p5= new Plaats(250,300,"p5");
Plaats alfa = new Plaats(50,250, "alfa");
Plaats omega= new Plaats(320,250, "omega");



Weg w1 = new Weg(p1,p2,12);
Weg w2 = new Weg(p1,p3,13);
Weg w3 = new Weg(p2,p3,23);
Weg w4 = new Weg(p1,p4,14);
Weg w5 = new Weg(p2,p4,24);
Weg w6 = new Weg(p5,p4,204);

Weg w7 = new Weg(alfa, p1, 100);
Weg w8 = new Weg(omega,p5,25);

// Kaart kaart= new Kaart();



kaart.add(p1);
kaart.add(p2);
kaart.add(p3);
kaart.add(p4);
kaart.add(p5);
kaart.add(alfa);
kaart.add(omega);

kaart.add(w1);
kaart.add(w2);
kaart.add(w3);
kaart.add(w4);
kaart.add(w5);
kaart.add(w6);
kaart.add(w7);
kaart.add(w8);




KaartTesterGraphics tk = new KaartTesterGraphics(kaart);

//////////////////////////////////////////////////////

tk.setBackground(Color.YELLOW);
tk.setBounds(280,10, 350,350);
pane.add(tk);

JButton berekenAfstand = new JButton("bereken afstand");
berekenAfstand.setBounds(280,380,200,30);
pane.add(berekenAfstand);

JTextField textBerekenAfstand= new JTextField();
textBerekenAfstand.setBounds(520,380,110,30);
pane.add(textBerekenAfstand);



frame.pack();
frame.show();
frame.setSize(650,500);

}


}
 
je kan de contstructor van ButtonListener aanpassen zodat deze ook een kaartFrame meekrijgt en een instance variabele toevoegen:

KaartFrame kaartFrame;

public ButtonListener(JTextField first, JTextField second,Kaart kaart, KaartFrame nwKaartFrame){
kaartFrame = nwKaartFrame;
(...)
}

en dan in je KaartFrame:

ButtonListener buttonListenerVoegPlaatsToe=
new ButtonListener(textX,textY, kaart, this);
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan