eigener Dialog erstellen

Gizmo-Mogwai

Grünschnabel
Hi

ich steh vor folgendem Rätsel. Bei den vorgefertigten Dialogen sind es immer Methoden die man aufruft und ein Rückgabewert wieder bekommt.

Beispiel:
int t =JOptionPane.showConfirmDialog(null, "Speichern?", "Speichern?", JOptionPane.YES_NO_OPTION);

Aber bei den Beispielen zum erstellen eigener Dialoge wird immer ein Objekt erzeugt. Soweit funktionieren die auch, aber ich weiß nicht wie ich das mit dem Rückgabewert machen soll.

So das wäre ein solches Beispiel:

package de.test.gui;

import java.awt.*;
import java.awt.event.*;
import java.sql.Connection;
import javax.swing.*;
import javax.swing.event.*;
import de.test.*;

public class Search extends JFrame
{
private JLabel lSearch;
private JTextField tfSearchfield;
private JList lOutputList;
private JScrollPane jScrollPane1;
private JButton bSearch;
private JPanel searchengine;

public Search(Connection con)
{
super();
initializeComponent( );
this.setVisible(true);
}

private void initializeComponent()
{
lSearch = new JLabel();
tfSearchfield = new JTextField();
lOutputList = new JList();
jScrollPane1 = new JScrollPane();
bSearch = new JButton();
searchengine = (JPanel)this.getContentPane();

lSearch.setText("Suche");
tfSearchfield.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
search_actionPerformed(e);
}

});

jScrollPane1.setViewportView(lOutputList);
bSearch.setText("Suchen");
bSearch.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
search_actionPerformed(e);
}

});

lOutputList.addListSelectionListener(new ListSelectionListener() {
public void valueChanged(ListSelectionEvent l)
{
if(!l.getValueIsAdjusting())
{

}
}
});

searchengine.setLayout(null);
addComponent(searchengine, lSearch, 10,11,64,18);
addComponent(searchengine, tfSearchfield, 10,36,110,22);
addComponent(searchengine, jScrollPane1, 10,74,200,196);
addComponent(searchengine, bSearch, 130,33,80,28);

this.setTitle("Suche ");
this.setLocation(new Point(0, 0));
this.setSize(new Dimension(230, 311));
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
}

private void addComponent(Container container,Component c,int x,int y,int width,int height)
{
c.setBounds(x,y,width,height);
container.add(c);
}

private void search_actionPerformed(ActionEvent e)
{
System.out.println("\nSuchen");
FillData.listdata(lOutputList,tfSearchfield.getText());

}
}


Und hiermit wird der Dialog aufgerufen:
new Search();
 
Hallo,

die Kommunikation in Java erfolgt über Klassen.

Erzeuge dir für deine Anwendung eine Datenklasse, über die du Werte übergeben kannst.
Dabei musst du ein Singleton in der Klasse einbauen, damit du auf dieselbe Instanz der Klasse zugreifen kannst.

Beispiel:

//********************************************************
// Datenklasse zur Überbage der gefundenen Werte Start
//********************************************************

public class FileDatenklasse {

private static FileDatenklasse _instance;

public synchronized static FileDatenklasse getInstance() {
if (_instance == null) {
_instance = new FileDatenklasse(pfadname, dateiname);
}

return _instance;
}

// Konstruktor FileDatenklasse legt einen Satz der Klasse
// FileDatenklasse an.
public FileDatenklasse(String k, String b) {
pfadname = k;
dateiname = b;
}

// Methode Klassensatz neu anlegen
public void satzNeu(String k, String b) {
pfadname = k;
dateiname = b;
}

// Methode getpfadname liefert den Schlüsselwert des aktuellen
// Satzes der Klasse
public String getPfadname() {
return pfadname;
}

// Methode getdateiname liefert die Bezeichnung des aktuellen
// Satzes der Klasse
public String getDateiname() {
return dateiname;
}

// In der Klasse FileDatenklasse wird der aktuelle Wert des
// Feldes pfadname auf den an die Methode übergebenen Wert gesetzt.
public void setPfadname(String key) {
pfadname = key;
}

// Dateinamen setzten
public void setDateiname(String bez) {
dateiname = bez;
}

// Die Klasse besteht aus diesem beiden Feldern
private static String pfadname;

private static String dateiname;

}


Aufruf:

FileDatenklasse.getInstance().setDateiname(Dateiname)

Bei jedem Aufruf musst du
FileDatenklasse.getInstance()
angeben, damit auf dieselbe Instanz der Klasse zugegriffen werden kann.


Gruß

Harald
 
Zurück