Bonjour,
dans le cas qui me pose problème je crée une table avec :
période lundi mardi mercredi jeudi vendredi samedi dimanche
matin
midi
soir
ensuite je vais remplir les cases vides lundi matin par exemple avec du code.
Je voudrais quand je remplis ces cases pouvoir faire un retour à la ligne avec un \n dans la case si je le souhaite.
j'utilise le code ci-dessous pour récupérer la table lundi mardi etc. vierge via une requete sql :
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 public JTable JtableRecordset() { try { //récupère les informations de connexions à la base de donnée VariablesGlobales vcon = new VariablesGlobales(); Class.forName(vcon.driverName); Connection con = DriverManager.getConnection(vcon.url, vcon.userName, vcon.password); //String sql = "select NOM,DESIGNATION,PRIX from COMPOSANTS"; //String sql = "select * from COMPOSANTS"; //deux cas de figure : on met les champ,table ou lar equete sql directement String sql=""; if (this.srequete == "") { sql = "Select " + schamps + " from " + stable; } else { sql = srequete; } PreparedStatement ps = con.prepareStatement(sql); ResultSet rs = ps.executeQuery(); //Récuperation des noms des colones ResultSetMetaData rsmetadata; rsmetadata = rs.getMetaData(); int itaille = rsmetadata.getColumnCount(); String columnNames [] = new String[itaille]; String rowcontent [] = new String[itaille]; String sentete=""; //test //column.setCellRenderer(new TextAreaTableCellRenderer()); //column.setPreferredWidth(300) ; int j =1; while(j !=rsmetadata.getColumnCount()+1) { //le tableau commence à 0 alors que le rsmetadat 1... columnNames [j-1] = rsmetadata.getColumnName(j); //System.out.println(rsmetadata.getColumnName(j)); //récupération des valeurs pour la requete if (j==1) { sentete = sentete + rsmetadata.getColumnName(j); } else { sentete = sentete + "," + rsmetadata.getColumnName(j); } j++; } // System.out.println(sentete); //ajout du nom des colones dans le modèle //au lieu d'uiliser le modele par defaut ligne ci dessous qui permet de modifier le contenu des cellules //DefaultTableModel model = new DefaultTableModel(); //j'utilise une version personnalisé qui ne permet pas la modification du contenu des cellules ModelTable model = new ModelTable(); model.setColumnIdentifiers(columnNames); table = new JTable(); table.setModel(model); table.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS); //empecher la selection de plusieur ligne table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); //permet de ne pas avoir la ligne bleue quad on selectionne une ligne //table.setSelectionBackground(Color.white); //table.enableInputMethods(false);; table.setFillsViewportHeight(true); /*//multiligne? MultiLineCellEditor editor = new MultiLineCellEditor(table); table.setDefaultEditor(String.class,editor);*/ JScrollPane scroll = new JScrollPane(table); scroll.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); scroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED); int i =0; while (rs.next()) { // for each row in the result set, put every column into a temporary Object array j=1; while(j !=rsmetadata.getColumnCount()+1) { rowcontent[j-1] = rs.getString(rsmetadata.getColumnName(j)); //System.out.println(rowcontent[j-1]); j++; } model.addRow(rowcontent); i++; } //affiche le nombre d'enregistrement trouvé if(i <1) { //JOptionPane.showMessageDialog(null, "No Record Found","Error",JOptionPane.ERROR_MESSAGE); } if(i ==1) { //System.out.println(i+" Record Found"); } else { //System.out.println(i+" Records Found"); } //cloture de la connexion try {con.close();} catch(SQLException e) {e.printStackTrace();} } catch(Exception ex) { JOptionPane.showMessageDialog(null, ex.getMessage(),"Error",JOptionPane.ERROR_MESSAGE); } return table; }
ensuite j'affiche le résultat avec ceci :
j'ai vu un exemple qui marche pour afficher plusieurs ligne mais sans lien avec une bdd et je n'arrive pas à l'adapter à mon code:
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 public void GenerateTable() { JScrollPane scroll = new JScrollPane(table); scroll.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); scroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED); JtableRecordset test = new JtableRecordset(srequete); table = new JTable(); //MyTableCellEditor table = test.JtableRecordset(); //permet de trier les enregistrements table.setAutoCreateRowSorter(true); //ajout du code permettant le filtrage du tableau sorter = new TableRowSorter<TableModel>(table.getModel()); table.setRowSorter(sorter); }
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 JFrame f = new JFrame(); DefaultTableModel dm = new DefaultTableModel() { public Class getColumnClass(int columnIndex) { return String.class; } }; dm.setDataVector(new Object[][]{{"MATIN","","","","","","",""}},//"aa\na","bb","cc"}}, new Object[]{"PERIODE","LUNDI","MARDI","MERCREDI","JEUDI","VENDREDI","SAMEDI","DIMANCHE"}); JTable table = new JTable( dm ); MultiLineCellEditor editor = new MultiLineCellEditor(table); table.setDefaultEditor(String.class,editor); JScrollPane scroll = new JScrollPane( table ); f.getContentPane().add( scroll ); f.setSize( 400, 400 ); f.setVisible(true);si quelqu'un a déjà eu ce type de problème, je suis preneur de son aide
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 package menus; import javax.swing.*; import javax.swing.table.*; import java.awt.*; import java.awt.event.*; import javax.swing.event.*; import javax.swing.*; public class MultiLineCellEditor extends AbstractCellEditor implements TableCellEditor { MyTextArea textArea; JTable table; public MultiLineCellEditor(JTable ta) { super(); table = ta; // this component relies on having this renderer for the String class MultiLineCellRenderer renderer = new MultiLineCellRenderer(); table.setDefaultRenderer(String.class,renderer); // JOptionPane.showMessageDialog(null,"jui ds l'editor","h",JOptionPane.INFORMATION_MESSAGE); textArea = new MyTextArea(); textArea.setLineWrap(true); textArea.setWrapStyleWord(true); for(int i=0;i<table.getRowCount();i++) updateRow(i); } /** This method determines the height in pixel of a cell given the text it contains */ private int cellHeight(int row,int col) { if (row == table.getEditingRow() && col == table.getEditingColumn()) return textArea.getPreferredSize().height; else return table.getDefaultRenderer(String.class).getTableCellRendererComponent(table, table.getModel().getValueAt(row,col),false,false,row,col).getPreferredSize().height; } void cellGrewEvent(int row,int column) { updateRow(row); } void cellShrankEvent(int row,int column) { updateRow(row); } void updateRow(int row) { int maxHeight = 0; for(int j=0;j<table.getColumnCount();j++) { int ch; if ((ch = cellHeight(row,j)) > maxHeight) { maxHeight = ch; } } table.setRowHeight(row,maxHeight); } public Object getCellEditorValue() { return textArea.getText(); } public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { textArea.setText(table.getValueAt(row,column).toString()); textArea.rowEditing = row; textArea.columnEditing = column; textArea.lastPreferredHeight = textArea.getPreferredSize().height; return textArea; } class MyTextArea extends JTextArea implements KeyListener { int lastPreferredHeight = 0; int rowEditing; int columnEditing; MyTextArea() { addKeyListener(this); // This is a fix to Bug Id 4256006 addAncestorListener( new AncestorListener(){ public void ancestorAdded(AncestorEvent e){ requestFocus(); } public void ancestorMoved(AncestorEvent e){} public void ancestorRemoved(AncestorEvent e){} }); } public void keyPressed(KeyEvent e) {} public void keyReleased(KeyEvent e) {} public void keyTyped(KeyEvent e) { if (getPreferredSize().getHeight() > lastPreferredHeight) { lastPreferredHeight = getPreferredSize().height; cellGrewEvent(rowEditing,columnEditing); // this will trigger the addition of extra lines upon the cell growing and // prevent all the text being lost when the cell grows to the point of requiring // scrollbars table.setValueAt(getText(),rowEditing,columnEditing); } else if (getPreferredSize().getHeight() < lastPreferredHeight) { lastPreferredHeight = getPreferredSize().height; cellShrankEvent(rowEditing,columnEditing); } else if (table.getValueAt(rowEditing,columnEditing).equals("")) table.setValueAt(getText(),rowEditing,columnEditing); } } }
Merci,
Fabrice
Partager