- // Voici par exemple le code du FileNameRenderer et FileEditor :
-
- package composants.CustomTable;
-
- import java.awt.BorderLayout;
- import java.awt.Color;
- import java.awt.Component;
-
- import javax.swing.JButton;
- import javax.swing.JPanel;
- import javax.swing.JTable;
- import javax.swing.JTextField;
- import javax.swing.table.TableCellRenderer;
-
- public class CFileNameRenderer implements TableCellRenderer {
-
- private static final long serialVersionUID = 1L;
- JTextField m_txtText;
- JPanel m_panControl;
-
- public CFileNameRenderer() {
- super();
- JButton m_btnFileName = new JButton("...");
- m_panControl = new JPanel(new BorderLayout());
- m_txtText = new JTextField();
- m_txtText.setEditable(false);
- m_txtText.setBackground(Color.WHITE);
- m_panControl.add(m_txtText, BorderLayout.CENTER);
- m_panControl.add(m_btnFileName, BorderLayout.EAST);
- }
-
- public Component getTableCellRendererComponent(JTable arg0, Object arg1, boolean arg2, boolean arg3, int arg4, int arg5) {
- m_txtText.setText((String) arg1);
- return m_panControl;
- }
-
- }
-
-
- package composants.CustomTable;
-
- import java.awt.BorderLayout;
- import java.awt.Color;
- import java.awt.Component;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
-
- import javax.swing.AbstractCellEditor;
- import javax.swing.JButton;
- import javax.swing.JFileChooser;
- import javax.swing.JPanel;
- import javax.swing.JTable;
- import javax.swing.JTextField;
- import javax.swing.SwingUtilities;
- import javax.swing.table.TableCellEditor;
-
- import affiche.CPictureFileFilter;
-
- public class CFileNameEditor extends AbstractCellEditor implements TableCellEditor {
-
- private static final long serialVersionUID = 1L;
-
- private JPanel m_panControl;
- private JTextField m_txtFileName;
- private int m_iCol;
- private int m_iRow;
- private JTable m_oTable;
-
- public CFileNameEditor() {
- JButton m_btnFileName = new JButton("...");
- m_panControl = new JPanel(new BorderLayout());
- m_txtFileName = new JTextField();
- m_txtFileName.setEditable(false);
- m_txtFileName.setBackground(Color.WHITE);
- m_panControl.add(m_txtFileName, BorderLayout.CENTER);
- m_panControl.add(m_btnFileName, BorderLayout.EAST);
-
- m_btnFileName.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent arg0) {
- new Thread(new Runnable() {
- public void run() {
- SwingUtilities.invokeLater(new Runnable() {
- public void run() {
- JFileChooser oFile = new JFileChooser();
- oFile.setApproveButtonText("Ouvrir");
- oFile.setMultiSelectionEnabled(false);
- oFile.setDialogTitle("Sélectionnez le nom du fichier d'image.");
- oFile.setFileFilter(new CPictureFileFilter());
- int iFileName = oFile.showDialog(m_txtFileName, "Ouvrir");
- if (iFileName == JFileChooser.APPROVE_OPTION) {
- String sFileName = oFile.getSelectedFile().getPath();
- m_txtFileName.setText(sFileName);
- m_oTable.getModel().setValueAt(m_txtFileName, m_iRow, m_iCol);
- }
- }
- });
- }
- }).start();
- }
- });
- }
-
- public Component getTableCellEditorComponent(JTable oTable, Object oFileName, boolean arg2, int arg3, int arg4) {
- m_txtFileName.setText((String) oFileName);
- m_iRow = arg3;
- m_iCol = arg4;
- m_oTable = oTable;
- return m_panControl;
- }
-
- public Object getCellEditorValue() {
- return m_txtFileName.getText();
- }
- }
-
// Voici par exemple le code du FileNameRenderer et FileEditor :
package composants.CustomTable;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.TableCellRenderer;
public class CFileNameRenderer implements TableCellRenderer {
private static final long serialVersionUID = 1L;
JTextField m_txtText;
JPanel m_panControl;
public CFileNameRenderer() {
super();
JButton m_btnFileName = new JButton("...");
m_panControl = new JPanel(new BorderLayout());
m_txtText = new JTextField();
m_txtText.setEditable(false);
m_txtText.setBackground(Color.WHITE);
m_panControl.add(m_txtText, BorderLayout.CENTER);
m_panControl.add(m_btnFileName, BorderLayout.EAST);
}
public Component getTableCellRendererComponent(JTable arg0, Object arg1, boolean arg2, boolean arg3, int arg4, int arg5) {
m_txtText.setText((String) arg1);
return m_panControl;
}
}
package composants.CustomTable;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.AbstractCellEditor;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JPanel;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
import javax.swing.table.TableCellEditor;
import affiche.CPictureFileFilter;
public class CFileNameEditor extends AbstractCellEditor implements TableCellEditor {
private static final long serialVersionUID = 1L;
private JPanel m_panControl;
private JTextField m_txtFileName;
private int m_iCol;
private int m_iRow;
private JTable m_oTable;
public CFileNameEditor() {
JButton m_btnFileName = new JButton("...");
m_panControl = new JPanel(new BorderLayout());
m_txtFileName = new JTextField();
m_txtFileName.setEditable(false);
m_txtFileName.setBackground(Color.WHITE);
m_panControl.add(m_txtFileName, BorderLayout.CENTER);
m_panControl.add(m_btnFileName, BorderLayout.EAST);
m_btnFileName.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
new Thread(new Runnable() {
public void run() {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
JFileChooser oFile = new JFileChooser();
oFile.setApproveButtonText("Ouvrir");
oFile.setMultiSelectionEnabled(false);
oFile.setDialogTitle("Sélectionnez le nom du fichier d'image.");
oFile.setFileFilter(new CPictureFileFilter());
int iFileName = oFile.showDialog(m_txtFileName, "Ouvrir");
if (iFileName == JFileChooser.APPROVE_OPTION) {
String sFileName = oFile.getSelectedFile().getPath();
m_txtFileName.setText(sFileName);
m_oTable.getModel().setValueAt(m_txtFileName, m_iRow, m_iCol);
}
}
});
}
}).start();
}
});
}
public Component getTableCellEditorComponent(JTable oTable, Object oFileName, boolean arg2, int arg3, int arg4) {
m_txtFileName.setText((String) oFileName);
m_iRow = arg3;
m_iCol = arg4;
m_oTable = oTable;
return m_panControl;
}
public Object getCellEditorValue() {
return m_txtFileName.getText();
}
}