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);
}
}
}
}