Problem med hent og indsæt i felter fra ArrayList
Hej.Jeg er løbet ind i et problem.
Jeg harn oprettet nogle klasser jeg har kaldt for Lokale, Kontor, Toilet og Mødelokale.
Jeg har indtastet de fælles træk for alle lokalerne i klassen Lokale dvs. lokaleNummer, antalKvadratmeter og lokaletype (som er en ComboBox).
I mine andre klasser har jeg lavet arv af klassen Lokale.
Jeg indsætter variablerne for de forskellige lokaler i en jList på denne måde:
Object obj = jComboBoxLokaleType.getSelectedItem();
if ( obj == "Toilet" ) {
Toilet wc = new Toilet();
wc.setLokaleNummer( Integer.parseInt( jTextFieldLokaleNummer.getText() ));
wc.setAntalKvadratmeter( Float.parseFloat( jTextFieldAntalKvadratmeter.getText() ));
//wc.setAntalArbejdspladser( Integer.parseInt( jTextFieldAntalArbejdspladser.getText() ));
wc.setLokaleType( (String) jComboBoxLokaleType.getSelectedItem() );
wc.setAntalKummer( Integer.parseInt( jTextFieldAntalKummer.getText() ));
wc.setAntalToiletter( Integer.parseInt( jTextFieldAntalToiletter.getText() ));
wc.setHerreEllerDamer( (String) jComboBoxHerreEllerDamer.getSelectedItem() );
lokaler.add( wc );
jListResultat.setListData( lokaler.toArray() );
} else if ( obj == "Kontor" ) {
Kontor kontorer = new Kontor();
kontorer.setLokaleNummer( Integer.parseInt( jTextFieldLokaleNummer.getText() ));
kontorer.setAntalKvadratmeter( Float.parseFloat( jTextFieldAntalKvadratmeter.getText() ));
kontorer.setAntalArbejdspladser( Integer.parseInt( jTextFieldAntalArbejdspladser.getText() ));
kontorer.setLokaleType( (String) jComboBoxLokaleType.getSelectedItem() );
lokaler.add( kontorer );
jListResultat.setListData( lokaler.toArray() );
Det fungere også fint og virker efter hensigten.
Jeg vil så gerne kunne rette i de allerede indtastede variabler. Det skal gøres ved at jeg klikker, ved hjælp af private void jListResultatMouseClicked(java.awt.event.MouseEvent evt), på det objekt jeg vil have rettet. Når jeg har klikket på objektet skal de forskellige variabler så indsættes i de korrekte felter i min GUI f.eks. skal tallet fra antalPladser indsættes i feltet antalpladser osv. osv.
Jeg har forsøgt at lave det på følgende måde (herunder et eksempel) :
private void jListResultatMouseClicked(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
Object obj = jComboBoxLokaleType.getSelectedItem();
if ( obj == "Toilet" ) {
Lokale lokaler = null;
lokaler = (Lokale) jListResultat.getSelectedValue();
jTextFieldLokaleNummer.setText(String.valueOf(lokaler.getLokaleNummer() ));
jTextFieldAntalKvadratmeter.setText( String.valueOf(lokaler.getAntalKvadratmeter() ));
jComboBoxLokaleType.setSelectedItem(lokaler.getLokaleType() );
} else if ( obj == "Kontor" ) {
Kontor lokaler = null;
jTextFieldAntalArbejdspladser.setText( String.valueOf( lokaler.getAntalArbejdspladser() ));
} else if ( obj == "Mødelokale" ) {
Mødelokale lokaler = null;
jTextFieldAntalPladser.setText( String.valueOf( lokaler.getAntalPladser() ));
}
Der sker ikke noget når jeg klikker med musen?
Jeg har også forsøgt med en anden måde (igen et eksempel):
private void jListResultatMouseClicked(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
Lokale lokaler = null;
lokaler = (Lokale) jListResultat.getSelectedValue();
jTextFieldLokaleNummer.setText(String.valueOf(lokaler.getLokaleNummer() ));
jTextFieldAntalKvadratmeter.setText( String.valueOf(lokaler.getAntalKvadratmeter() ));
jComboBoxLokaleType.setSelectedItem(lokaler.getLokaleType() );
jTextFieldAntalArbejdspladser.setText( String.valueOf( lokaler.getAntalArbejdspladser() ));
Det virker egentlig også fint nok indtil jeg når til jTextFieldAntalArbejdspladser.setText( String.valueOf( lokaler.getAntalArbejdspladser() )); Her får jeg at vide at variablen ikke findes og jeg har fundet ud af at det er fordi den kigger i min Lokale klasse som jeg refererer til ved hjælp af Lokale lokaler = null; - Mit spørgsmål lyder så på, hvordan gør jeg så jeg også kan kigge i min Kontor, Toilet og Mødelokale klasse og kan det overhovedet lade sig gøre?
Hvis I kan komme med nogle eksempler eller forslag til hvordan jeg kan løse mit problem ville det være perfekt.
På forhånd tak.
