IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants Java Discussion :

Filtrer par recherche dans un TextFiled sur des JTable générées dynamqiuement


Sujet :

Composants Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 76
    Points : 40
    Points
    40
    Par défaut Filtrer par recherche dans un TextFiled sur des JTable générées dynamqiuement
    Bonjour encore une fois tout le monde,

    Voila j'avance petit à petit dans mon application. Je me penche sur une problématique à laquelle je ne trouve pas jusqu'a maintenent de solution

    Je génère dans mon application des Jtable dynamiques qui sont placés dans différets onglets. Je voudrais maintenant pouvoir placer un JtextFiled sur chaque colonne de mes taleaux pour filtrer les recherches. Vu que ces tables sont générés dynamqiuement,je n'ai aucun contrôle sur eux après génération. Je ne sais pas du coup comment pouvoir rajouter cette fonctionnalité.
    Voici le code de mon application :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
     
    import java.awt.BorderLayout;
     
     
    public class test extends JFrame {
     
    	private JPanel contentPane;
    	ArrayList<String> elements=new ArrayList<String>();
    	ArrayList<String> elementsIn=new ArrayList<String>();
     
    	/**
             * Launch the application.
             */
    	public static void main(String[] args) {
    		EventQueue.invokeLater(new Runnable() {
    			public void run() {
    				try {
    					test frame = new test();
    					frame.setVisible(true);
    				} catch (Exception e) {
    					e.printStackTrace();
    				}
    			}
    		});
    	}
     
    	/**
             * Create the frame.
             * @throws SQLException 
             */
    	public test() throws SQLException {
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		setBounds(100, 100, 1200, 600);
    		contentPane = new JPanel();
    		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
    		setContentPane(contentPane);
    		contentPane.setLayout(null);
    		elements.add("product 1");
    		elements.add("product 2");
    		elements.add("product 3");
    		elementsIn.add("in 1");
    		elementsIn.add("in 2");
    		elementsIn.add("in 3");
    		JTabbedPane paneTop=new JTabbedPane();
    		paneTop.setBounds(31, 52, 1140, 510);
    		Connection con=ConnectDataBaseGeneric("jdbc:jtds:sybase://xxx/kplus","xxx","xxx ,"net.sourceforge.jtds.jdbc.Driver");
    		ResultSet rs= GetResultFromQuery(con,"select * from Branches");
     
    		//on repace le curseur avant la première ligne
     
     
    		DefaultTableModel model = buildTableModel(rs);
     
    		con.close();
     
    		for(int i=0;i<elements.size();i++){
    			System.out.println("je suis dans la phase I "+ i );
    			JPanel panelTop=new JPanel();
    			panelTop.setBounds(40,60,1130,500);
    			JTabbedPane paneIn=new JTabbedPane();
    			paneIn.setBounds(50,100,1125,450);
     
    			for(int y=0;y<elementsIn.size();y++){
    				JScrollPane scroll=createJScrollPane(model);
    				JPanel panel=createJPanelIn(scroll);
    				paneIn.add(elementsIn.get(y),panel);
    			}
    			panelTop.add(paneIn);
    			paneTop.add(elements.get(i),panelTop);
    		}
     
    		contentPane.add(paneTop);	
     
     
    	}
    	public static Connection ConnectDataBaseGeneric(String url,String login, String mdp,String driver){
     
    		try {
    			Class.forName(driver);
    		}
    		catch(ClassNotFoundException ex) {
    			System.out.println("Error: unable to load driver class!");
    		}
    		try {	
    			return DriverManager.getConnection(url, login, mdp);
    		} catch (SQLException e) {
    			e.printStackTrace();
    			return null;
    		}
     
    	}
     
    	public static ResultSet GetResultFromQuery(Connection conn,String query,String ...args){
    		Statement stmt ;
    		//String newQuery=TransformQuery(query,args);
    		try {
    			stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY,ResultSet.HOLD_CURSORS_OVER_COMMIT);
    			//stmt = conn.createStatement();
    			return stmt.executeQuery(query);
    		} catch (SQLException e) {
    			//traitement de l'exception
    			e.printStackTrace();
    			return null;
    		}
    	}
    	public static DefaultTableModel buildTableModel(ResultSet rs) throws SQLException {
     
    		ResultSetMetaData metaData = rs.getMetaData();
     
    		// names of columns
    		Vector<String> columnNames = new Vector<String>();
    		int columnCount = metaData.getColumnCount();
    		for (int column = 1; column <= columnCount; column++) {
    			columnNames.add(metaData.getColumnName(column));
    		}
    		// data of the table
    		Vector<Vector<Object>> data = new Vector<Vector<Object>>();
    		while (rs.next()) {
    			Vector<Object> vector = new Vector<Object>();
    			for (int columnIndex = 1; columnIndex <= columnCount; columnIndex++) {
    				vector.add(rs.getObject(columnIndex));
    			}
    			data.add(vector);
    		}
     
    		return new DefaultTableModel(data, columnNames);
     
    	}
    	public static JScrollPane createJScrollPane(DefaultTableModel defaultTableModel){
     
    		JScrollPane scrollPane_dataTable = new JScrollPane();
     
    		scrollPane_dataTable.setBounds(63,130,1108,432);
    		scrollPane_dataTable.setViewportBorder(null);
     
    		JXTable datatable = new JXTable(defaultTableModel);
    		scrollPane_dataTable.setViewportView(datatable);
     
     
    		return scrollPane_dataTable;
    	}
     
    	public static JPanel createJPanelIn(JScrollPane jScrollPane){
     
    		JPanel panel= new JPanel();
    		panel.setBounds(55,120,1115,440);
    		panel.add(jScrollPane);
     
    		return panel;
    	}
     
    }
    un visuel du résultat est aussi disponible dans la pièce jointe.

    Merci à vous d'avance
    Images attachées Images attachées  

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    fait toi un composant SWING à toi (une classe qui étend JPanel), composer d'un JTextField est d'une JTable, avec tout le code qui permet de lier les deux pour que le textfield soit filtrant. Et modifie ta méthode de création de JTable pour qu'elle créé ce composant au lieu de créer directement une JTable (donc cette classe aura un constructeur dont les arguments sont ceux dont tu as besoin pour créer ta JTable, au moins.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

Discussions similaires

  1. Réponses: 1
    Dernier message: 08/08/2012, 14h52
  2. Recherche dans une BDD : gestion des doublons ?
    Par remy77 dans le forum kettle/PDI
    Réponses: 5
    Dernier message: 26/05/2009, 00h07
  3. Réponses: 2
    Dernier message: 05/08/2007, 22h34
  4. erreur dans programme java sur des vecteurs 3D
    Par HighSchool2005 dans le forum Langage
    Réponses: 18
    Dernier message: 15/02/2007, 16h38
  5. Table par defaut dans un select sur 2 tables
    Par gibee dans le forum Requêtes
    Réponses: 4
    Dernier message: 20/10/2005, 21h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo