Zrušení výběru pomocí .clearSelection(); – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Zrušení výběru pomocí .clearSelection(); – Java – Fórum – Programujte.comZrušení výběru pomocí .clearSelection(); – Java – Fórum – Programujte.com

 

Toto vlákno bylo označeno za vyřešené.
Nicolas0
Návštěvník
1. 11. 2012   #1
-
0
-

Dobrého večera všem.

Nedaří se mně zrušit výběr pomocí .clearSelection();

Tedy normálně se mně to daří, ale jak do toho začnu montovat sql dotaz (teda myslím že je to tím), tak se mně to zasekne a "neodznačí".

Vytvořil jsem proto krátký příklad, na kterým bych to rád ilustroval.

Po kliknutí na tlačítko button1 (8 řádků od konce) bych chtěl zrušit výběr v list1, ale to se neprovede.

Poraďte, pěkně prosím.

Díky, N.

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
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;
JTabbedPane tabbedPane = new JTabbedPane();
JPanel panel1 = new JPanel();
JButton button1 = new JButton("Clear");
String[] data1 = {"DTW", "NTB", "RNBA", "CK", "PDR"};
JList list1 = new JList(data1);
DefaultListModel data2 = new DefaultListModel();
JList list2 = new JList(data2);

public nazev () {

    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setVisible (true);
    getContentPane().setLayout (new BorderLayout());
    getContentPane().add(panel1,BorderLayout.CENTER);

    panel1.add(button1);
    panel1.add(list2);
    list2.setPreferredSize(new Dimension (100,100));
    panel1.add(list1);
    list1.setPreferredSize(new Dimension (100,100));
    button1.addActionListener (new ActionButton1());
    list1.addListSelectionListener( new ListSelectionListener1());

    setSize (300,140);
    }
        class ListSelectionListener1 implements ListSelectionListener {
        public void valueChanged(ListSelectionEvent e) {

        if (e.getValueIsAdjusting())
        return;

        Object[] selected1 = list1.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 TaskName FROM Tracker WHERE Code IN(";
for (int i = 0, n = selected1.length; i < n; i++) {
if (i > 0) query1 += " ,";
query1 += "'" + selected1[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};
                    data2.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);
                }
          }
    }
        class ActionButton1 implements ActionListener {
        public void actionPerformed(ActionEvent e) {

                    list1.clearSelection();

            }
        }
    }
Nahlásit jako SPAM
IP: 82.144.151.–
Nicolas

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

Provede :). Tedy alespoň u mě, ale musel jsem vykomentovat nastavení Listeneru pro List, protože mě to při výběru hned vyhodilo neb nemám databázi. Třeba se List jen nepřekreslí, tak můžeš zkusit přidat nucené překreslení.

Nahlásit jako SPAM
IP: 188.75.135.–
Nicolas0
Návštěvník
5. 11. 2012   #3
-
0
-

Upraveno následovně a funguje, dííík.

Bez tebe bych javu dávno vzdal  

        class ActionButton1 implements ActionListener {
        public void actionPerformed(ActionEvent e) {

                    list1.repaint();
                    list1.clearSelection();
            }
Nahlásit jako SPAM
IP: 82.144.151.–
Nicolas

Quis ut Deus?
Nicolas0
Návštěvník
20. 11. 2012   #4
-
0
-

Ahoj, měl bych k tomu ještě dotaz.

Jestli jsem to bobře pochopil, přístup do databáze by měl být ve svém vlastním vláknu. Je to tak?

Sice jsem si o vláknech něco přečetl, ale moudrý z toho tedy rozhodně nejsem  vlastně tomu nerozumím.

Asi bych měl použít SwingWorker? Poradíte mně kudy se vydat?

Předem díky, N.

Nahlásit jako SPAM
IP: 62.209.192.–
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ů

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ý