tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
3
ZUGRIFFE
1578
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Crai Crai ist offline Mitglied Silber
    Registriert seit
    Aug 2004
    Beiträge
    67
    Hallo zusammen,

    ich hab in meiner JTable eine Zelle, die einen Kommentar enthalten kann.
    Den kann natürlich der Anwender eingeben. Ihm soll es aber auch möglich sein, mit Enter
    in ne neue Zeile zu springen und diesen Kommentar nun beliebig viele Zeilen lang machen zu können.
    Dazu hab ich mich umgesehen und zB das hier gefunden:
    MultiLine Cell

    Dieses Beispiel is ja auch ganz net, aber nur, wie viele andre auch, nur wenn die Daten per Programm in die Zelle geschrieben werden, nicht aber vom Anwender.

    Wie müsste ich nun vom Prinzip her vorgehen, um dies dem Anwender zu ermöglichen?
    Etwa:
    - ein CellRenderer mit JTextArea als Komponente, das setLineWrap(true)
    - dann das ENTER per Action der Table abfangen, rausfinden in welcher Zelle das war,
    - und dann verhindern das endEditing() aufgerufen wird ?

    Is das richtig

    Vielen Dank,
    CU Crai
     

  2. #2
    Registriert seit
    Apr 2004
    Ort
    Ruhrgebiet
    Beiträge
    1.582
    >Hallo zusammen,
    >ich hab in meiner JTable eine Zelle, die einen Kommentar enthalten kann.
    >Den kann natürlich der Anwender eingeben. Ihm soll es aber auch möglich sein, mit Enter
    in ne neue Zeile zu springen und diesen Kommentar nun beliebig viele Zeilen lang machen zu können.
    >Dazu hab ich mich umgesehen und zB das hier gefunden:
    MultiLine Cell

    >Dieses Beispiel is ja auch ganz net, aber nur, wie viele andre auch, nur wenn die Daten per Programm in die Zelle geschrieben werden, nicht aber vom Anwender.

    >Wie müsste ich nun vom Prinzip her vorgehen, um dies dem Anwender zu ermöglichen?
    >Etwa:
    >- ein CellRenderer mit JTextArea als Komponente, das setLineWrap(true)

    Muss das nicht eher der CellEditor sein? Schliesslich editierst Du ja.

    >- dann das ENTER per Action der Table abfangen, rausfinden in welcher Zelle das war,

    Jo, klingt plausibel.

    >- und dann verhindern das endEditing() aufgerufen wird ?

    IIRC heißt das stopCellEditing() oder cancelCellEditing() (bei ESC).

    >Is das richtig

    >Vielen Dank,
    >CU Crai

    Jo, so würde ich zunächst vorgehen.
     

  3. #3
    Crai Crai ist offline Mitglied Silber
    Registriert seit
    Aug 2004
    Beiträge
    67
    Jo, danke das wollt ich wissen, klar ich mein natürlich den CellEditor!

    Dann schau ich mal,ob ich das hinkrieg....

    CU Crai
     

  4. #4
    Crai Crai ist offline Mitglied Silber
    Registriert seit
    Aug 2004
    Beiträge
    67
    so, nun ganz so locker flockig gehts nun doch nicht.
    kann zwar, das ENTER vom Benutzer abfangen, stopCellEditing() verhindern, auch beginnt
    die JTextArea eine neue Zeile, nur vergrößert sich nicht die entsprechende Zelle der JTable. Habs schon mit repaint() versucht, will aber nicht...

    Was kann man da tun?

    CU
    Crai

    Code :
    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
    
        public class MyMultLineCellEditor extends AbstractCellEditor implements TableCellEditor 
        {
            private JTextArea textArea = null;
            public MyMultLineCellEditor()
            {
                if (textArea == null)
                {
                    textArea = new JTextArea();
                    textArea.setLineWrap(true);
                    textArea.setWrapStyleWord(true);
                    textArea.addKeyListener(new KeyListener()
                    {
                        public void keyPressed(KeyEvent e) 
                        {
                            if (e.getKeyCode() == KeyEvent.VK_ENTER && getJTable().getEditingColumn() == getJTable().getColumn(GUIHelper.s_sComment).getModelIndex())
                            {
                                ((MyTable)getJTable()).setEnterStatus(true); //wenn EnterStatus == true KEIN stopCellEditing()
                                textArea.setText(textArea.getText() + '\n');
                            }
                        };
                        public void keyTyped(KeyEvent e) {};
                        public void keyReleased(KeyEvent e) {};
                    }
                    );
                    
                }
            }
        
            public Component getTableCellEditorComponent(JTable table, Object value,
            boolean isSelected, int rowIndex, int vColIndex) 
            {
                textArea.setText(table.getValueAt(rowIndex,vColIndex).toString());
     
                return textArea;
            }
        
            public Object getCellEditorValue() 
            {
                return textArea.getText();
            }
        
     
        }
     

Ähnliche Themen

  1. Multiline bei Textbox
    Von exiter28 im Forum .NET Windows Forms
    Antworten: 5
    Letzter Beitrag: 04.11.10, 11:03
  2. table rcp multiline header
    Von Zach Cordon im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 0
    Letzter Beitrag: 20.04.09, 15:38
  3. Multiline in editFeldern [WinAPI)
    Von kodak im Forum C/C++
    Antworten: 4
    Letzter Beitrag: 04.08.04, 19:58
  4. Multiline Tooltip
    Von Thomas Darimont im Forum Visual Basic 6.0
    Antworten: 0
    Letzter Beitrag: 25.03.04, 00:09
  5. TEdit multiline
    Von Interritor im Forum Delphi, Kylix, Pascal
    Antworten: 6
    Letzter Beitrag: 07.05.03, 19:33