Kombinace čtyř JListů – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Kombinace čtyř JListů – Java – Fórum – Programujte.comKombinace čtyř JListů – Java – Fórum – Programujte.com

 

Nicolas0
Návštěvník
31. 8. 2012   #1
-
0
-

Ahoj všem,

chtěl bych poprosit nějakou dobrou duši o pomoc.

Vysvětlím logiku... Mám čtyři JListy (200 - název projektu, 201 - status, 202 - jméno a 203 - detail projktu). Když vyberu položky v 201 a 202, zobrazí se do 203 a 204 odpovídající data z databáze pro výběr. To funguje.

Pak vyberu jméno z 202 a zobrazí to pouze detaily k danému projektu, statusu a jménu. To stále funguje.

Teď popíšu co udělám a jak to přestane fungovat:

Když znovu vyberu status (In process) a pak vyberu status Open, nezobrazí se žádné jméno. Když ale kliknu do JList 202 zobrazí se jméno a k němu i detaily k projektu.

Pochopili jste mě? :-)

Díky, N.

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.sql.*;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;

public class MainClass {
    public static void main(String[] args) {
        nazev apl = new nazev();
    }
}
class nazev extends JFrame {

int IvarA;
String varB="";
String varC;
int IvarB;
int IvarC;
int i;

JPanel panel = new JPanel();
String[] data200 = {"DTW", "NTB", "RNBA", "CK", "PDR", "HVP", "AIO"};
JList list200 = new JList(data200);
String[] data201 = {"Open", "In Process", "Waiting", "On Hold", "Closed"};
JList list201 = new JList(data201);
DefaultListModel data202 = new DefaultListModel();
JList list202 = new JList(data202);
DefaultListModel data203 = new DefaultListModel();
JList list203 = new JList(data203);
JButton button = new JButton("Start");

public nazev () {

    setSize (450,400);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setVisible (true);
    getContentPane().setLayout (new BorderLayout());
    getContentPane().add(panel,BorderLayout.CENTER);

    panel.add(list200);
    panel.add(list201);
    panel.add(list202);
    panel.add(list203);
    list202.setPreferredSize(new Dimension(110,310));
    list203.setPreferredSize(new Dimension(110,310));
    list200.addListSelectionListener( new ListSelectionListener200());
    list201.addListSelectionListener( new ListSelectionListener201());
    list202.addListSelectionListener( new ListSelectionListener202());

    }

class ListSelectionListener200 implements ListSelectionListener { // for list200
        public void valueChanged(ListSelectionEvent e) {

            list202.clearSelection();

        if (e.getValueIsAdjusting())

        return;

            data202.clear();
            data203.clear();

                Object[] selected1 = list200.getSelectedValues();
                Object[] selected2 = list201.getSelectedValues();
                Object[] selected3 = list200.getSelectedValues();
                Object[] selected4 = list201.getSelectedValues();
                try {
                String url = "jdbc:odbc:databaze1";
                String jmeno1;
                Statement pozadavek = null;
                ResultSet vysledek1 = null;
                Connection dB = null;
                try {
                    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
                    dB = DriverManager.getConnection(url);
                } catch (ClassNotFoundException v) {
                    System.err.println("Nepodařilo se zavést most JDBC/ODBC." + v.getMessage());
                    System.exit(1);
                } catch (SQLException v) {
                    System.err.println("Nepodařilo se připojit k databázi." + v.getMessage());
                    System.exit(2);
                }
                try {
String query1 = "Select Owner FROM Tracker WHERE Code IN(";

for (int i = 0, n = selected1.length; i < n; i++) {
   if (i > 0) query1 += ",";
   query1 += "'" + selected1[i] + "'";
}
query1 += ")AND Status IN(";

for (int i = 0, n = selected2.length; i < n; i++) {
   if (i > 0) query1 += ",";
   query1 += "'" + selected2[i] + "'";
}
query1 += ")";

                    pozadavek = dB.createStatement();
                    vysledek1 = pozadavek.executeQuery(query1);

                } catch (SQLException v) {
                    System.err.println("Chyba SQL." + v.getMessage());
                    //System.exit(3);
                }
                boolean zaznamy1 = vysledek1.next();
                if (!zaznamy1) {
                    //System.out.println("Nebyla vrácena žádná data");
                    //System.exit(4);
                }
                try {
                    do {
                    jmeno1 = vysledek1.getString(1);
                    String[] items1 = {jmeno1};
                    data202.add(IvarA, items1[IvarA]);
                    } while (vysledek1.next());

                } catch (SQLException v) {
                    System.err.println("Chyba při zobrazaní dat." + v.getMessage());
                    //System.exit(5);

                } finally {
                    dB.close();
                }
                }
                catch (SQLException v) {
                    System.err.println("Chyba Exit 6." + v.getMessage());
                    //System.exit(6);
                }
//Second part of SQL query for the second column from dB (TaskName)
                                try {
                String url = "jdbc:odbc:databaze1";
                String jmeno2;
                Statement pozadavek = null;
                ResultSet vysledek2 = null;
                Connection dB = null;
                try {
                    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
                    dB = DriverManager.getConnection(url);
                } catch (ClassNotFoundException v) {
                    System.err.println("Nepodařilo se zavést most JDBC/ODBC." + v.getMessage());
                    System.exit(1);
                } catch (SQLException v) {
                    System.err.println("Nepodařilo se připojit k databázi." + v.getMessage());
                    System.exit(2);
                }
                try {
String query2 = "Select TaskName FROM Tracker WHERE Code IN(";

for (int i = 0, n = selected3.length; i < n; i++) {
   if (i > 0) query2 += ",";
   query2 += "'" + selected3[i] + "'";
}
query2 += ")AND Status IN(";

for (int i = 0, n = selected4.length; i < n; i++) {
   if (i > 0) query2 += ",";
   query2 += "'" + selected4[i] + "'";
}
query2 += ")";

                    pozadavek = dB.createStatement();
                    vysledek2 = pozadavek.executeQuery(query2);

                } catch (SQLException v) {
                    System.err.println("Chyba SQL." + v.getMessage());
                    //System.exit(3);
                }
                boolean zaznamy2 = vysledek2.next();
                if (!zaznamy2) {
                    //System.out.println("Nebyla vrácena žádná data");
                    //System.exit(4);
                }
                try {
                    do {
                    jmeno2 = vysledek2.getString(1);
                    String[] items2 = {jmeno2};
                    data203.add(IvarB, items2[IvarB]);
                    } while (vysledek2.next());

                } catch (SQLException v) {
                    System.err.println("Chyba při zobrazaní dat." + v.getMessage());
                    //System.exit(5);

                } finally {
                    dB.close();
                }
                }
                catch (SQLException v) {
                    System.err.println("Chyba Exit 6." + v.getMessage());
                    //System.exit(6);
                }
         }
    }

    class ListSelectionListener201 implements ListSelectionListener { //for list201
        public void valueChanged(ListSelectionEvent e) {

        list202.clearSelection();

        if (e.getValueIsAdjusting())


        return;

            data202.clear();
            data203.clear();

                Object[] selected1 = list200.getSelectedValues();
                Object[] selected2 = list201.getSelectedValues();
                Object[] selected3 = list200.getSelectedValues();
                Object[] selected4 = list201.getSelectedValues();
                try {
                String url = "jdbc:odbc:databaze1";
                String jmeno1;
                Statement pozadavek = null;
                ResultSet vysledek1 = null;
                Connection dB = null;
                try {
                    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
                    dB = DriverManager.getConnection(url);
                } catch (ClassNotFoundException v) {
                    System.err.println("Nepodařilo se zavést most JDBC/ODBC." + v.getMessage());
                    System.exit(1);
                } catch (SQLException v) {
                    System.err.println("Nepodařilo se připojit k databázi." + v.getMessage());
                    System.exit(2);
                }
                try {
String query1 = "Select Owner FROM Tracker WHERE Code IN(";

for (int i = 0, n = selected1.length; i < n; i++) {
   if (i > 0) query1 += ",";
   query1 += "'" + selected1[i] + "'";
}
query1 += ")AND Status IN(";

for (int i = 0, n = selected2.length; i < n; i++) {
   if (i > 0) query1 += ",";
   query1 += "'" + selected2[i] + "'";
}
query1 += ")";

                    pozadavek = dB.createStatement();
                    vysledek1 = pozadavek.executeQuery(query1);

                } catch (SQLException v) {
                    System.err.println("Chyba SQL." + v.getMessage());
                    //System.exit(3);
                }
                boolean zaznamy1 = vysledek1.next();
                if (!zaznamy1) {
                    //System.out.println("Nebyla vrácena žádná data");
                    //System.exit(4);
                }
                try {
                    do {
                    jmeno1 = vysledek1.getString(1);
                    String[] items2 = {jmeno1};
                    data202.add(IvarA, items2[IvarA]);
                    } while (vysledek1.next());

                } catch (SQLException v) {
                    System.err.println("Chyba při zobrazaní dat." + v.getMessage());
                    //System.exit(5);

                } finally {
                    dB.close();
                }
                }
                catch (SQLException v) {
                    System.err.println("Chyba Exit 6." + v.getMessage());
                    //System.exit(6);
                }
//Second part of SQL query for the second column from dB (TaskName)
                                try {
                String url = "jdbc:odbc:databaze1";
                String jmeno2;
                Statement pozadavek = null;
                ResultSet vysledek2 = null;
                Connection dB = null;
                try {
                    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
                    dB = DriverManager.getConnection(url);
                } catch (ClassNotFoundException v) {
                    System.err.println("Nepodařilo se zavést most JDBC/ODBC." + v.getMessage());
                    System.exit(1);
                } catch (SQLException v) {
                    System.err.println("Nepodařilo se připojit k databázi." + v.getMessage());
                    System.exit(2);
                }
                try {
String query2 = "Select TaskName FROM Tracker WHERE Code IN(";

for (int i = 0, n = selected3.length; i < n; i++) {
   if (i > 0) query2 += ",";
   query2 += "'" + selected3[i] + "'";
}
query2 += ")AND Status IN(";

for (int i = 0, n = selected4.length; i < n; i++) {
   if (i > 0) query2 += ",";
   query2 += "'" + selected4[i] + "'";
}
query2 += ")";

                    pozadavek = dB.createStatement();
                    vysledek2 = pozadavek.executeQuery(query2);

                } catch (SQLException v) {
                    System.err.println("Chyba SQL." + v.getMessage());
                    //System.exit(3);
                }
                boolean zaznamy2 = vysledek2.next();
                if (!zaznamy2) {
                    //System.out.println("Nebyla vrácena žádná data");
                    //System.exit(4);
                }
                try {
                    do {
                    jmeno2 = vysledek2.getString(1);
                    String[] items3 = {jmeno2};
                    data203.add(IvarB, items3[IvarB]);
                    } while (vysledek2.next());

                } catch (SQLException v) {
                    System.err.println("Chyba při zobrazaní dat." + v.getMessage());
                    //System.exit(5);

                } finally {
                    dB.close();
                }
                }
                catch (SQLException v) {
                    System.err.println("Chyba Exit 6." + v.getMessage());
                    //System.exit(6);
                }
         }
    }

        class ListSelectionListener202 implements ListSelectionListener { //for list202
        public void valueChanged(ListSelectionEvent e) {

        if (e.getValueIsAdjusting())
        return;

            data203.clear();

                Object[] selected5 = list200.getSelectedValues();
                Object[] selected6 = list201.getSelectedValues();
                Object[] selected7 = list202.getSelectedValues();

                try {
                String url = "jdbc:odbc:databaze1";
                String jmeno3;
                Statement pozadavek = null;
                ResultSet vysledek1 = null;
                Connection dB = null;
                try {
                    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
                    dB = DriverManager.getConnection(url);
                } catch (ClassNotFoundException v) {
                    System.err.println("Nepodařilo se zavést most JDBC/ODBC." + v.getMessage());
                    System.exit(1);
                } catch (SQLException v) {
                    System.err.println("Nepodařilo se připojit k databázi." + v.getMessage());
                    System.exit(2);
                }
                try {
String query3 = "Select TaskName FROM Tracker WHERE Code IN(";

for (int i = 0, n = selected5.length; i < n; i++) {
   if (i > 0) query3 += ",";
   query3 += "'" + selected5[i] + "'";
}
query3 += ")AND Status IN(";

for (int i = 0, n = selected6.length; i < n; i++) {
   if (i > 0) query3 += ",";
   query3 += "'" + selected6[i] + "'";
}
query3 += ")AND Owner IN(";

for (int i = 0, n = selected7.length; i < n; i++) {
   if (i > 0) query3 += ",";
   query3 += "'" + selected7[i] + "'";
}
query3 += ")";

                    pozadavek = dB.createStatement();
                    vysledek1 = pozadavek.executeQuery(query3);

                } catch (SQLException v) {
                    System.err.println("Chyba SQL." + v.getMessage());
                    //System.exit(3);
                }
                boolean zaznamy1 = vysledek1.next();
                if (!zaznamy1) {
                    //System.out.println("Nebyla vrácena žádná data");
                    //System.exit(4);
                }
                try {
                    do {
                    jmeno3 = vysledek1.getString(1);
                    String[] items4 = {jmeno3};
                    data203.add(IvarC, items4[IvarC]);
                    } while (vysledek1.next());

                } catch (SQLException v) {
                    System.err.println("Chyba při zobrazaní dat." + v.getMessage());
                    //System.exit(5);

                } finally {
                    dB.close();
                }
                }
                catch (SQLException v) {
                    System.err.println("Chyba Exit 6." + v.getMessage());
                    //System.exit(6);
                }

            }
    }
}

Nahlásit jako SPAM
IP: 62.209.192.–
Nicolas

Quis ut Deus?
liborb
~ Redaktor
+18
Guru
31. 8. 2012   #2
-
0
-

Dávejte to, prosím tě, do tagů k tomu určených, tj. do zdrojového kódu. A řekni mi, když pracuješ s IvarA, kde ji nastavuješ nebo měníš?

Nahlásit jako SPAM
IP: 78.80.52.–
Nicolas0
Návštěvník
31. 8. 2012   #3
-
0
-

S tagy se polepším... to je ten <? že jo.

IvarA nastavuji hned na začátku na 15 řádku, jako že bych to měl dát přímo do ListSelectionListeneru?

Díky, N.

Nahlásit jako SPAM
IP: 62.209.192.–
Nicolas

Quis ut Deus?
liborb
~ Redaktor
+18
Guru
31. 8. 2012   #4
-
0
-

Jako myslíš toto? 

int IvarA;

Pokud ano, tak jsem nemyslel deklaraci, ale kde do IvarA přiřadíš nějakou hodnotu?

Nahlásit jako SPAM
IP: 78.80.52.–
Nicolas0
Návštěvník
31. 8. 2012   #5
-
0
-

OK, řádek 116

data202.add(IvarA, items1[IvarA]);

N.

Nahlásit jako SPAM
IP: 62.209.192.–
Nicolas

Quis ut Deus?
liborb
~ Redaktor
+18
Guru
31. 8. 2012   #6
-
0
-

Ok. A jakou hodnotu má IvarA na řádku 116?

Nahlásit jako SPAM
IP: 78.80.52.–
Nicolas0
Návštěvník
31. 8. 2012   #7
-
0
-

Snad nekecám, ale myslím že tolik nul, kolik vyberu položek z JListu.

Na přehlednosti kódu ještě zapracuju :-) teď se ale zabývám tím, aby to vůbec fugovalo.

Díky, N.

Nahlásit jako SPAM
IP: 82.144.151.–
Nicolas

Quis ut Deus?
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 7 hostů

Podobná vlákna

Vkládání do JListu — založil maca.d

Java Scroll v JListu — založil Pan Mluvčí

Ctyr/Osmi-směrka — založil tedd

Kombinace — založil David

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý