Je fais un projet informatique qui me demande de créer un JTable que l'on pourrait filtrer. J'ai réussi à ajouter une fonction de tri mais je suis incapable d'ajouter une fonction de filtrage. L'exemple le plus proche que je pourrais trouver, qui est similaire à ce que je veux, est le TableFilterDemoProject avec la possibilité de le lancer et le code source à http://docs.oracle.com/javase/tutorial/uiswing/examples/components/index.html#TableFilterDemoFiltrer un JTable
J'essaie d'ajouter la possibilité de filtrer mon code à cette pièce de code
import javax.swing.*;
import java.awt.*;
import java.io.*;
import java.lang.*;
//////////////////
import javax.swing.RowFilter;
import javax.swing.event.*;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.TableRowSorter;
import java.awt.Dimension;
import java.awt.Component;
//////////////////
public class CompFrame
{
JFrame myMainWindow = new JFrame("This is my title");
JPanel firstPanel = new JPanel(); //a panel for first tab
//first panel components
JScrollPane myScrollTable;
public void runGUI()
{
myMainWindow.setBounds(10, 10, 1296, 756); //set position, then dimensions
myMainWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
myMainWindow.setLayout(new GridLayout(1,1));
createFirstPanel(); //call method to create each panel
myMainWindow.getContentPane().add(firstPanel); //adds the tabbedpane to mainWindow
myMainWindow.setVisible(true); //make the GUI appear
}
public void createFirstPanel()
{
firstPanel.setLayout(null);
String[] aHeaders = {"Athlete ID","Forename","Surname"};
String[][] sampleData = new String[3][3]; //rows,cols
sampleData[0][0] = "JS98";
sampleData[0][1] = "John";
sampleData[0][2] = "Smith";
sampleData[1][0] = "DB56";
sampleData[1][1] = "David";
sampleData[1][2] = "Bower";
sampleData[2][0] = "LL86";
sampleData[2][1] = "Lex";
sampleData[2][2] = "Luthor";
JTable myTable = new JTable(sampleData,aHeaders);
myTable.setAutoCreateRowSorter(true); //Sorts by a-z or 0-9 in the columns when a header is clicked
myScrollTable = new JScrollPane(myTable);
myScrollTable.setSize(1282,600);
myScrollTable.setLocation(0,120);
System.out.println("Creating compare table");
firstPanel.add(myScrollTable);
}
public static void main(String[] args)
{
CompFrame cf = new CompFrame();
cf.runGUI();
}
}
J'apprécierais n'importe quelle aide. Merci
* « Je suis en train d'ajouter la possibilité de filtrer .. » * Où dans ce code que vous avez essayé d'établir un 'TableRowSorter'? SO n'est pas un site "s'il vous plaît terminer ma tâche". Quelle est votre question * spécifique *? –
Ma tentative a été supprimée car elle a complètement foiré mon programme. Ma question spécifique est de savoir comment ajouter un filtre correctement et simplement? – Dan
1) 'firstPanel.setLayout (null);' Les interfaces graphiques Java doivent fonctionner sur différents systèmes d'exploitation, taille d'écran, résolution d'écran, etc. Elles ne sont donc pas propices à une mise en page parfaite. Utilisez plutôt des gestionnaires de disposition, ou [des combinaisons de ceux-ci] (http://stackoverflow.com/a/5630271/418556) avec un remplissage de mise en page et des bordures pour [espace blanc] (http://stackoverflow.com/a/17874718/ 418556). 2) Copie possible de [Composant pour filtrer une liste] (http://stackoverflow.com/q/28621617/418556) (comme si le code source lié à l'OP n'était pas ...). –