Witam,
Próbuję stworzyć rozszerzenie klasy JDialog i zwrócić z niej informację do głównego okna. Przykłady wygoglowane i oracle nie pomagają mi rozwiązać problemu bo nigdzie nie ma przykłady który by przypominał coś co chcę zrobić. Mianowicie w konstruktorze klasy dziedziczącej po JDialog chciałbym umieścić dane do wypełniania dwóch list. Całość działa poprawnie po za jednym mankamentem
. Nie jestem w stanie w żaden sposób wymyślić jak przekazać wynik działania mojej klasy do głównego programu
Klasa dziedzicząca po JDialog
poproszę o jakąś sugestię jak to wywołać żeby można było zgarnąć dowolnie albo adresy na oby wybranych listach
bądź też tekst
pozdrawiam
package Okno;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import javax.swing.*;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
/**
*
* @author w.maciejewski
*/
public class JWyborPlayerki extends JDialog implements ActionListener ,ListSelectionListener{
private final JList listagrup;
private JList listaplayerek;
private final JButton zatwierdz;
private final JButton anuluj;
private final DefaultListModel listagrupmod;
private DefaultListModel listaplayeremod;
private ArrayList<String[]> playerkii;
public String doplay;
public JWyborPlayerki(String[] nazwy,String[] grupy, ArrayList<String[]> playerki){
playerkii=playerki;
setSize(420,350);
setVisible( true );
listagrupmod=new DefaultListModel();
listaplayeremod=new DefaultListModel();
for(int i=0;i<grupy.length;i++){
listagrupmod.addElement(grupy[i]);
}
listagrup = new JList(listagrupmod);
listaplayerek=new JList(listaplayeremod);
zatwierdz=new JButton(nazwy[3]);
anuluj=new JButton(nazwy[4]);
getContentPane().setLayout(new BorderLayout());
JLabel jgrupt=new JLabel(nazwy[5]);
JLabel jplayert=new JLabel(nazwy[6]);
JPanel textpanel=new JPanel(new GridLayout(0,2));
getContentPane().add(textpanel,BorderLayout.NORTH);
textpanel.add(jgrupt) ;
textpanel.add(jplayert) ;
JPanel listpanel=new JPanel(new GridLayout(0,2));
getContentPane().add(listpanel,BorderLayout.CENTER);
listpanel.setBorder(BorderFactory.createLineBorder(Color.BLUE));
listpanel.add(listagrup) ;
listaplayerek.setBorder(BorderFactory.createLineBorder(Color.BLUE));
listagrup.setBorder(BorderFactory.createLineBorder(Color.BLUE));
listpanel.add(listaplayerek) ;
listagrup.addListSelectionListener(this);
listaplayerek.addListSelectionListener(this);
JPanel butonpanel=new JPanel(new GridLayout(0,2));
zatwierdz.setEnabled(false);
zatwierdz.addActionListener(this);
anuluj.addActionListener(this);
getContentPane().add(butonpanel,BorderLayout.SOUTH) ;
butonpanel.add(zatwierdz);
butonpanel.add(anuluj) ;
getContentPane().repaint();
}
@Override
public void actionPerformed(ActionEvent e) {
Object source = e.getSource();
if(source==zatwierdz)
{
int j=listagrup.getSelectedIndex();
String kila=(String) listagrupmod.getElementAt(j);
int k=listaplayerek.getSelectedIndex();
String kila1=(String) listaplayeremod.getElementAt(k);
doplay=kila+"\\"+kila1;
dispose();
}else
if(source==anuluj){
dispose();
}
}
@Override
public void valueChanged(ListSelectionEvent lse) {
Object source=lse.getSource();
if(source==listagrup){
int j=listagrup.getSelectedIndex();
String[] kila=playerkii.get(j);
listaplayeremod.removeAllElements();
for(int i=0;i<kila.length;i++){
listaplayeremod.addElement(kila[i]);
}
}
if(source==listaplayerek){
zatwierdz.setEnabled(true);
}
}
}