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 :

JTable et JFormatedJTextField


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1
    Par défaut JTable et JFormatedJTextField
    Tout d'abord, comme sur tous forum, je me présente en ne disant que le minimum je suis étudiant en informatique et j'ai besoin de vos conseils.

    Je suis entrain de développé un petit éditeur de texte.
    C'est à dire un JTable contenant trois colonne dont la dernière un JFormatedJtextField. Pour les deux premières, un simple Renderer me suffit pour leurs utilisations. Seulement pour la troisième j'ai besoin de plusieurs choses.

    On commencera par la première question
    1 : Lors d'un seul clique je veux pouvoir récupérer le focus du JFormatedJTextField et pourvoir l'éditer sans aucun soucis.

    Je vous fais parvenir mon code Source.

    Svp, ne me dites pas "google est ton ami" ou encore "une petite recherche sur le forum" parce que sa fait deux jours que je recherche, modifie, test ce qui est sur le net et rien ne marche.

    En vous remerciant d'avance.

    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
     
    public class Editor extends JPanel {
     
    public class TextRenderer extends JFormattedTextField implements TableCellRenderer {
     
            public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean isFocus, int row, int col) {
                this.setText((String) value);
                this.setBorder(null);
                this.setOpaque(true);
                this.validate();
                return this;
     
            }
        }
        private TableauModel index;
        //private JTextArea editor;
        private List<Integer> breakpoint;
        private Map<Integer, String> code;
        JTable table;
     
     public Editor(Map<Integer, String> txt, List<Integer> liste) {
            this.setLayout(new GridLayout(1, 1));
            this.validate();
            index = new TableauModel(new Object[1][1], new String[1], true);
            breakpoint = liste;
            code = txt;
            table = new JTable();
        }
     
    public void init() {
            //L'index des lignes et des BreakPoint
            String[] titre = {"Ligne", "BreakPoint", "Editor"};
            index = new TableauModel(new Object[1][2], titre, true);
            table = new JTable(index);
    //        table.setSurrendersFocusOnKeystroke(true);
            table.setOpaque(true);
            table.setTableHeader(null);
    //        table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
            table.getColumn("Ligne").setCellRenderer(new ButtonRenderer());
            table.getColumn("Ligne").setMaxWidth(50);
            table.getColumn("Ligne").setMinWidth(50);
            table.getColumn("Ligne").setPreferredWidth(50);
            table.getColumn("BreakPoint").setCellRenderer(new CellRenderer());
            table.getColumn("BreakPoint").setMaxWidth(20);
            table.getColumn("BreakPoint").setMinWidth(20);
            table.getColumn("BreakPoint").setPreferredWidth(20);
            table.getColumn("Editor").setCellEditor(new TextEditor(new JFormattedTextField()));
            table.getColumn("Editor").setCellRenderer(new TextRenderer());
    	  JScrollPane scroll = new JScrollPane(table);
            scroll.setColumnHeaderView(new JLabel("Alex"));
            scroll.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
            scroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
            this.add(scroll);
            this.validate();
        }
    }

    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
     
    public class TextEditor extends AbstractCellEditor implements TableCellEditor{
     
        JFormattedTextField text;
     
        public TextEditor(JFormattedTextField jf) {
            text = jf;
            text.addMouseListener(new MouseAdapter() {
     
                public void mouseCliked(MouseEvent e) {
                    System.out.println("heeeeeere");
                    text.requestFocusInWindow();
                }
            });
            text.addKeyListener(new KeyListener() {
     
                public void keyTyped(KeyEvent e) {
                    throw new UnsupportedOperationException("Not supported yet.");
                }
     
                public void keyPressed(KeyEvent e) {
                    text.setValue(String.valueOf(e.getKeyChar()));
                }
     
                public void keyReleased(KeyEvent e) {
                    throw new UnsupportedOperationException("Not supported yet.");
                }
            });
        }
     
        public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
            text.setText((String) value);
            return text;
        }
     
        public Object getCellEditorValue() {
            return text.getValue();
        }
    }

  2. #2
    Membre confirmé
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    174
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 174
    Par défaut
    voila une classe qui défini un composant semblable à un JFormatedTxtField dans un JTable :

    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
    public class NumberCellRenderer extends DefaultTableCellRenderer {
     
        DecimalFormat numberFormat = new DecimalFormat("#,###.## ;(#,###.##)");
     
        public Component getTableCellRendererComponent(JTable jTable, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
            Component c = super.getTableCellRendererComponent(jTable, value, isSelected, hasFocus, row, column);
            if (c instanceof JLabel && value instanceof Number) {
                JLabel label = (JLabel) c;
                label.setHorizontalAlignment(JLabel.RIGHT);
                Number num = (Number) value;
                numberFormat.setMinimumFractionDigits(2);
                String text = numberFormat.format(num);
                label.setText(text);
     
                label.setForeground(num.doubleValue() < 0 ? Color.RED : Color.BLACK);
            }
            return c;
        }
    }
    bon courage.

Discussions similaires

  1. [Swing]JTable- Dimensionner les colonnes
    Par loutfi dans le forum Composants
    Réponses: 12
    Dernier message: 01/07/2011, 08h50
  2. focus dans une cellule d'une JTable
    Par coil dans le forum Composants
    Réponses: 5
    Dernier message: 07/07/2010, 17h15
  3. [SWING]jTable + Focus
    Par chady dans le forum Composants
    Réponses: 5
    Dernier message: 27/02/2003, 14h51
  4. JBuilder7 & JTable Colonne alignement
    Par Tonton Luc dans le forum JBuilder
    Réponses: 5
    Dernier message: 06/11/2002, 17h32
  5. Réponses: 9
    Dernier message: 12/08/2002, 07h38

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