- package projet.table;
-
- /**
- * <p>Titre : MyScrollTable</p>
- * <p>Description : Classe permettant d'avoir une MyTable avec des ascenseurs</p>
- * @version 1.0
- */
-
- //Importation des packages nécessaires
- import javax.swing.AbstractListModel;
- import javax.swing.JList;
- import javax.swing.JScrollPane;
-
- public class MyScrollTable extends JScrollPane {
- //Variables globales
- private boolean rowHeader;
- private AbstractListModel model;
-
- /**Constructeur
- * @param table La table*/
- public MyScrollTable(MyTable table) {
- super(table, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
- JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
- rowHeader = false;
- }
-
- /**Constructeur
- * @param table La table
- * @param rowHeader Affichage d'un header pour les lignes*/
- public MyScrollTable(MyTable table, boolean rowHeader) {
- super(table, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
- JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
- this.rowHeader = rowHeader;
-
- defineRowHeader(table);
- }
-
- /**Constructeur
- * @param table La table
- * @param rowHeader Affichage d'un header pour les lignes
- * @param lm AbstractListModel à utiliser*/
- public MyScrollTable(MyTable table, boolean rowHeader, AbstractListModel lm) {
- super(table, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
- JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
- this.rowHeader = rowHeader;
- model = lm;
-
- defineRowHeader(table);
- }
-
- /**Méthode définissant si nécessaire les entêtes de lignes
- * @param table Sur quelle table*/
- public void defineRowHeader(MyTable table) {
- if(rowHeader){
- AbstractListModel lm = null;
-
- if(model ==null){
- lm = new MyTableListModel(table);
- }
- else{
- lm = model;
- }
-
- JList list = new JList(lm);
- list.setFixedCellWidth(50);
- list.setFixedCellHeight(table.getRowHeight());
- list.setCellRenderer(new MyTableRowHeaderRenderer(table));
- list.setBackground(table.getTableHeader().getBackground());
- this.setRowHeaderView(list);
- }
- else{
- this.setRowHeaderView(null);
- }
-
- table.setMyScrollTable(this);
- }
-
- /**Méthode permettant de savoir si on affiche les entêtes de lignes
- * @return Gestion des entêtes de lignes ?*/
- public boolean isRowHeader() {
- return rowHeader;
- }
-
- /**Méthode indiquant si on gére les entêtes de lignes*/
- public void setRowHeader(boolean rowHeader) {
- this.rowHeader = rowHeader;
- }
- }
-
-
- package projet.table;
-
- /**
- * <p>Titre : MyTableRowHeaderRenderer</p>
- * <p>Description : Classe permettant d'avoir une entête pour les lignes</p>
- * @version 1.0
- */
-
- //Importation des packages nécessaires
- import java.awt.Component;
- import javax.swing.JLabel;
- import javax.swing.JList;
- import javax.swing.JTable;
- import javax.swing.ListCellRenderer;
- import javax.swing.UIManager;
- import javax.swing.table.JTableHeader;
-
- public class MyTableRowHeaderRenderer extends JLabel implements ListCellRenderer {
- /**Constructeur
- * @param table Sur quelle table*/
- public MyTableRowHeaderRenderer(JTable table) {
- JTableHeader header = table.getTableHeader();
- setOpaque(true);
- setBorder(UIManager.getBorder("TableHeader.cellBorder"));
- setHorizontalAlignment(CENTER);
- setForeground(header.getForeground());
- setBackground(header.getBackground());
- setFont(header.getFont());
- }
-
- /**Méthode permettant d'avoir la list renderer d'une ligne
- * @param list Liste
- * @param value Valeur
- * @param index Index de ligne
- * @param isSelected Savoir si la ligne est sélectionnée
- * @param cellHasFocus Savoir si la cellule a le focus*/
- public Component getListCellRendererComponent(JList list,
- Object value, int index, boolean isSelected, boolean cellHasFocus) {
- setText("" + (index + 1));
- return this;
- }
- }
package projet.table;
/**
* <p>Titre : MyScrollTable</p>
* <p>Description : Classe permettant d'avoir une MyTable avec des ascenseurs</p>
* @version 1.0
*/
//Importation des packages nécessaires
import javax.swing.AbstractListModel;
import javax.swing.JList;
import javax.swing.JScrollPane;
public class MyScrollTable extends JScrollPane {
//Variables globales
private boolean rowHeader;
private AbstractListModel model;
/**Constructeur
* @param table La table*/
public MyScrollTable(MyTable table) {
super(table, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
rowHeader = false;
}
/**Constructeur
* @param table La table
* @param rowHeader Affichage d'un header pour les lignes*/
public MyScrollTable(MyTable table, boolean rowHeader) {
super(table, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
this.rowHeader = rowHeader;
defineRowHeader(table);
}
/**Constructeur
* @param table La table
* @param rowHeader Affichage d'un header pour les lignes
* @param lm AbstractListModel à utiliser*/
public MyScrollTable(MyTable table, boolean rowHeader, AbstractListModel lm) {
super(table, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
this.rowHeader = rowHeader;
model = lm;
defineRowHeader(table);
}
/**Méthode définissant si nécessaire les entêtes de lignes
* @param table Sur quelle table*/
public void defineRowHeader(MyTable table) {
if(rowHeader){
AbstractListModel lm = null;
if(model ==null){
lm = new MyTableListModel(table);
}
else{
lm = model;
}
JList list = new JList(lm);
list.setFixedCellWidth(50);
list.setFixedCellHeight(table.getRowHeight());
list.setCellRenderer(new MyTableRowHeaderRenderer(table));
list.setBackground(table.getTableHeader().getBackground());
this.setRowHeaderView(list);
}
else{
this.setRowHeaderView(null);
}
table.setMyScrollTable(this);
}
/**Méthode permettant de savoir si on affiche les entêtes de lignes
* @return Gestion des entêtes de lignes ?*/
public boolean isRowHeader() {
return rowHeader;
}
/**Méthode indiquant si on gére les entêtes de lignes*/
public void setRowHeader(boolean rowHeader) {
this.rowHeader = rowHeader;
}
}
package projet.table;
/**
* <p>Titre : MyTableRowHeaderRenderer</p>
* <p>Description : Classe permettant d'avoir une entête pour les lignes</p>
* @version 1.0
*/
//Importation des packages nécessaires
import java.awt.Component;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JTable;
import javax.swing.ListCellRenderer;
import javax.swing.UIManager;
import javax.swing.table.JTableHeader;
public class MyTableRowHeaderRenderer extends JLabel implements ListCellRenderer {
/**Constructeur
* @param table Sur quelle table*/
public MyTableRowHeaderRenderer(JTable table) {
JTableHeader header = table.getTableHeader();
setOpaque(true);
setBorder(UIManager.getBorder("TableHeader.cellBorder"));
setHorizontalAlignment(CENTER);
setForeground(header.getForeground());
setBackground(header.getBackground());
setFont(header.getFont());
}
/**Méthode permettant d'avoir la list renderer d'une ligne
* @param list Liste
* @param value Valeur
* @param index Index de ligne
* @param isSelected Savoir si la ligne est sélectionnée
* @param cellHasFocus Savoir si la cellule a le focus*/
public Component getListCellRendererComponent(JList list,
Object value, int index, boolean isSelected, boolean cellHasFocus) {
setText("" + (index + 1));
return this;
}
}