tutorials.de Buch-Aktion 05/2012
Seite 1 von 2 12 LetzteLetzte
ERLEDIGT
NEIN
ANTWORTEN
15
ZUGRIFFE
6109
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    MRS MRS ist offline Mitglied
    Registriert seit
    Jul 2004
    Beiträge
    24
    Hallo zusammen.
    Ich habe mir auf die dauer nen schönen Quelltext zusammen geklaut und umgebastelt, nur glaube ich das ich den Überblick verloren habe
    Ich würde gerne beim klick auf den Buttons in der Tabelle die TextArea aktualisieren,
    aber nach 2 Tagen hab ich das jetzt aufgegeben wie das gehen soll.
    Ausserdem soll der Panel nacher in einem anderem Frame dargestellt werden neben anderen Panels. Ich weis nicht ob das wichtig ist.

    Gedanken habe ich dazu ohne Ende, nur fehlt mir wohl noch ein wenig das KnowHow.

    Wäre nett wenn mir wer helfen könnte.
    Code java:
    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
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import javax.swing.table.*;
     
    public class Buttontabelle extends JPanel
    {
        private static final long serialVersionUID = 1L;
        private boolean DEBUG = false;
        String ausgabe = "Test";
        
        Buttontabelle()
        {
            super(new GridLayout(1,0));
    //      post("Test geht");
    //  }
    //  
    //  public Component post(String ausgabe)
    //    {
            JTable table = new JTable(new MyTableModel());
            JTextArea textArea = new JTextArea();
            textArea.setEditable(false);
            textArea.append(ausgabe);       
            initColumnSizes(table);
            JScrollPane scrollPane1 = new JScrollPane( table );
            JScrollPane scrollPane2 = new JScrollPane( textArea );
            JSplitPane splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT,scrollPane1 ,scrollPane2 );
            add(splitPane);
            new ButtonColumn(table, 4);
        //  return splitPane;
        }
        
        private void initColumnSizes(JTable table) 
        {
            MyTableModel model = (MyTableModel)table.getModel();
            TableColumn column = null;
            Component comp = null;
            int headerWidth = 0;
            int cellWidth = 0;
            Object[] longValues = model.longValues;
            TableCellRenderer headerRenderer = table.getTableHeader().getDefaultRenderer();
     
            for (int i = 0; i < 5; i++) 
            {
                column = table.getColumnModel().getColumn(i);
                comp = headerRenderer.getTableCellRendererComponent(null, column.getHeaderValue(),false, false, 0, 0);
                headerWidth = comp.getPreferredSize().width;
                comp = table.getDefaultRenderer(model.getColumnClass(i)).getTableCellRendererComponent(table, longValues[i],false, false, 0, i);
                cellWidth = comp.getPreferredSize().width;
     
                if (DEBUG) 
                {
                    System.out.println("Initializing width of column"+i+". headerWidth = "+headerWidth+"; cellWidth = "+cellWidth);
                }
                column.setPreferredWidth(Math.max(headerWidth, cellWidth));
            }
        }
     
        class MyTableModel extends AbstractTableModel 
        {
            private static final long serialVersionUID = 1L;
     
            Object[][] data = {{"Sonja", "Opologisch","Rumstehen","Sat May 13 09:27:46 CEST 2006","Sehen"},{"Sonja", "Opologisch","Rumstehen","Sat May 13 09:27:46 CEST 2006","Sehen"},{"Sonja", "Opologisch","Rumstehen","Sat May 13 09:27:46 CEST 2006","Sehen"}};
            String[] columnNames = {"Vor","Nach","Sonstiges","Datum","Sehen"};
     
            public final Object[] longValues = {"Sonja", "Opologisch","Rumstehen","Sat May 13 09:27:46 CEST 2006","Sehen"};
            public int getColumnCount() {return columnNames.length;}
            public int getRowCount() {return data.length;}
            public String getColumnName(int col) {return columnNames[col];}
            public Object getValueAt(int row, int col) {return data[row][col];}
     
            public Class<?> getColumnClass(int c)
            {
                return getValueAt(0, c).getClass();
            }
     
            public boolean isCellEditable(int row, int col) 
            {
                if (col < 4) 
                {
                    return false;
                } 
                else 
                {
                    return true;
                }
            }
            
            public void setValueAt(Object value, int row, int col) 
            {
                if (DEBUG) 
                {
                    System.out.println("Setting value at "+row+","+col+" to "+value+" (an instance of "+value.getClass()+")");
                }
     
                data[row][col] = value;
                fireTableCellUpdated(row, col);
     
                if (DEBUG) 
                {
                    System.out.println("New value of data:");
                    printDebugData();
                }
            }
     
            private void printDebugData() 
            {
                int numRows = getRowCount();
                int numCols = getColumnCount();
                
                for (int i=0; i < numRows; i++) 
                {
                    System.out.print("    row " + i + ":");
                    for (int j=0; j < numCols; j++) 
                    {
                        System.out.print("  " + data[i][j]);
                    }
                    System.out.println();
                }
                System.out.println("--------------------------");
            }
        }
     
     
        class ButtonColumn extends AbstractCellEditor implements TableCellRenderer, TableCellEditor, ActionListener
        {
            private static final long serialVersionUID = 1L;
            JTable table;
            JButton renderButton;
            JButton editButton;
            String text;
     
            public ButtonColumn(JTable table, int column)
            {
                super();
                this.table = table;
                renderButton = new JButton();
                editButton = new JButton();
                editButton.setFocusPainted( false );
                editButton.addActionListener( this );
     
                TableColumnModel columnModel = table.getColumnModel();
                columnModel.getColumn(column).setCellRenderer( this );
                columnModel.getColumn(column).setCellEditor( this );
            }
     
            public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column)
            {
                if (hasFocus)
                {
                    renderButton.setForeground(table.getForeground());
                    renderButton.setBackground(UIManager.getColor("Button.background"));
                }
                else if (isSelected)
                {
                    renderButton.setForeground(table.getSelectionForeground());
                    renderButton.setBackground(table.getSelectionBackground());
                }
                else
                {
                    renderButton.setForeground(table.getForeground());
                    renderButton.setBackground(UIManager.getColor("Button.background"));
                }
                renderButton.setText( (value == null) ? "" : value.toString() );
                return renderButton;
            }
     
            public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column)
            {
                text = (value == null) ? "" : value.toString();
                editButton.setText( text );
                return editButton;
            }
     
            public Object getCellEditorValue()
            {
                return text;
            }
     
            public void actionPerformed(ActionEvent e)
            {
                fireEditingStopped();
                System.out.println(e.getActionCommand() + " : " + table.getSelectedRow());
                ausgabe=(e.getActionCommand() + " : " + table.getSelectedRow());
            }
        }
        public static void main(String[] args) 
        { 
            JFrame.setDefaultLookAndFeelDecorated(true);
            JFrame frame = new JFrame("Testfenster");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            Buttontabelle newContentPane = new Buttontabelle();
            newContentPane.setOpaque(true);
            frame.setContentPane(newContentPane);
            frame.pack();
            frame.setVisible(true);
        }
    }
    Geändert von MRS (26.05.06 um 21:46 Uhr)
     
    Ich kann zwar nicht alles, aber alles probieren!

  2. #2
    flashray flashray ist offline Mitglied Rubin
    Registriert seit
    Sep 2005
    Ort
    Mannheim
    Beiträge
    1.325
    Hallo Marco,

    also der Aufbau des Codes hat mir nicht sehr gefallen. Du möchtest den Text der JTextArea verändern können. Er ist aber außerhalb der Methode post nicht erreichbar. Du hast auch keine Getter, Setter definiert um die JTextArea zu erreichen.

    Code java:
    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
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    
    import java.awt.Component;
    import java.awt.GridLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
     
    import javax.swing.*;
    import javax.swing.table.*;
     
    public class Buttontabelle extends JPanel {
        private static final long serialVersionUID = 1L;
     
        private boolean DEBUG = false;
        
        String ausgabe = "Test";
     
    // Geändert //
        private JTextArea tArea;
    //
        
        Buttontabelle() {
            super(new GridLayout(1, 0));
            post("Test geht");
        }
     
        public Component post(String ausgabe) {
            JTable table = new JTable(new MyTableModel());
            JTextArea textArea = new JTextArea();
    // Geändert //
            tArea = textArea;
    //
            textArea.setEditable(false);
            textArea.append(ausgabe);
            initColumnSizes(table);
            JScrollPane scrollPane1 = new JScrollPane(table);
            JScrollPane scrollPane2 = new JScrollPane(textArea);
            JSplitPane splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT,
                    scrollPane1, scrollPane2);
            add(splitPane);
            new ButtonColumn(table, 4);
            return splitPane;
        }
     
        private void initColumnSizes(JTable table) {
            MyTableModel model = (MyTableModel) table.getModel();
            TableColumn column = null;
            Component comp = null;
            int headerWidth = 0;
            int cellWidth = 0;
            Object[] longValues = model.longValues;
            TableCellRenderer headerRenderer = table.getTableHeader()
                    .getDefaultRenderer();
     
            for (int i = 0; i < 5; i++) {
                column = table.getColumnModel().getColumn(i);
                comp = headerRenderer.getTableCellRendererComponent(null, column
                        .getHeaderValue(), false, false, 0, 0);
                headerWidth = comp.getPreferredSize().width;
                comp = table.getDefaultRenderer(model.getColumnClass(i))
                        .getTableCellRendererComponent(table, longValues[i], false,
                                false, 0, i);
                cellWidth = comp.getPreferredSize().width;
     
                if (DEBUG) {
                    System.out.println("Initializing width of column" + i
                            + ". headerWidth = " + headerWidth + "; cellWidth = "
                            + cellWidth);
                }
                column.setPreferredWidth(Math.max(headerWidth, cellWidth));
            }
        }
     
        class MyTableModel extends AbstractTableModel {
            private static final long serialVersionUID = 1L;
     
            Object[][] data = {
                    { "Sonja", "Opologisch", "Rumstehen",
                            "Sat May 13 09:27:46 CEST 2006", "Sehen" },
                    { "Sonja", "Opologisch", "Rumstehen",
                            "Sat May 13 09:27:46 CEST 2006", "Sehen" },
                    { "Sonja", "Opologisch", "Rumstehen",
                            "Sat May 13 09:27:46 CEST 2006", "Sehen" } };
     
            String[] columnNames = { "Vor", "Nach", "Sonstiges", "Datum", "Sehen" };
     
            public final Object[] longValues = { "Sonja", "Opologisch",
                    "Rumstehen", "Sat May 13 09:27:46 CEST 2006", "Sehen" };
     
            public int getColumnCount() {
                return columnNames.length;
            }
     
            public int getRowCount() {
                return data.length;
            }
     
            public String getColumnName(int col) {
                return columnNames[col];
            }
     
            public Object getValueAt(int row, int col) {
                return data[row][col];
            }
     
            public Class<?> getColumnClass(int c) {
                return getValueAt(0, c).getClass();
            }
     
            public boolean isCellEditable(int row, int col) {
                if (col < 4) {
                    return false;
                } else {
                    return true;
                }
            }
     
            public void setValueAt(Object value, int row, int col) {
                if (DEBUG) {
                    System.out.println("Setting value at " + row + "," + col
                            + " to " + value + " (an instance of "
                            + value.getClass() + ")");
                }
     
                data[row][col] = value;
                fireTableCellUpdated(row, col);
     
                if (DEBUG) {
                    System.out.println("New value of data:");
                    printDebugData();
                }
            }
     
            private void printDebugData() {
                int numRows = getRowCount();
                int numCols = getColumnCount();
     
                for (int i = 0; i < numRows; i++) {
                    System.out.print("    row " + i + ":");
                    for (int j = 0; j < numCols; j++) {
                        System.out.print("  " + data[i][j]);
                    }
                    System.out.println();
                }
                System.out.println("--------------------------");
            }
        }
     
        class ButtonColumn extends AbstractCellEditor implements TableCellRenderer,
                TableCellEditor, ActionListener {
            private static final long serialVersionUID = 1L;
     
            JTable table;
     
            JButton renderButton;
     
            JButton editButton;
     
            String text;
     
            public ButtonColumn(JTable table, int column) {
                super();
                this.table = table;
                renderButton = new JButton();
                editButton = new JButton();
                editButton.setFocusPainted(false);
                editButton.addActionListener(this);
     
                TableColumnModel columnModel = table.getColumnModel();
                columnModel.getColumn(column).setCellRenderer(this);
                columnModel.getColumn(column).setCellEditor(this);
            }
     
            public Component getTableCellRendererComponent(JTable table,
                    Object value, boolean isSelected, boolean hasFocus, int row,
                    int column) {
                if (hasFocus) {
                    renderButton.setForeground(table.getForeground());
                    renderButton.setBackground(UIManager
                            .getColor("Button.background"));
                } else if (isSelected) {
                    renderButton.setForeground(table.getSelectionForeground());
                    renderButton.setBackground(table.getSelectionBackground());
                } else {
                    renderButton.setForeground(table.getForeground());
                    renderButton.setBackground(UIManager
                            .getColor("Button.background"));
                }
                renderButton.setText((value == null) ? "" : value.toString());
                return renderButton;
            }
     
            public Component getTableCellEditorComponent(JTable table,
                    Object value, boolean isSelected, int row, int column) {
                text = (value == null) ? "" : value.toString();
                editButton.setText(text);
                return editButton;
            }
     
            public Object getCellEditorValue() {
                return text;
            }
     
            public void actionPerformed(ActionEvent e) {
                fireEditingStopped();
                System.out.println(e.getActionCommand() + " : "
                        + table.getSelectedRow());
                ausgabe = (e.getActionCommand() + " : " + table.getSelectedRow());
     
    // Geändert
                tArea.setText(ausgabe);
    //
     
            }
        }
     
        public static void main(String[] args) {
            JFrame.setDefaultLookAndFeelDecorated(true);
            JFrame frame = new JFrame("Testfenster");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            Buttontabelle newContentPane = new Buttontabelle();
            newContentPane.setOpaque(true);
            frame.setContentPane(newContentPane);
            frame.pack();
            frame.setVisible(true);
        }
    }


    Vg Erdal
     

  3. #3
    MRS MRS ist offline Mitglied
    Registriert seit
    Jul 2004
    Beiträge
    24
    Boar Erdal....
    Kann ich bei dir anfangen!

    Ich glaube nicht das du das in 30min raus hast (Inkl. Code einrücken) und ich 2 Tage daran gesessen habe ><.

    Wie schon letztes mal kann ich nur sagen.
    Vielen vielen Dank!
     
    Ich kann zwar nicht alles, aber alles probieren!

  4. #4
    MRS MRS ist offline Mitglied
    Registriert seit
    Jul 2004
    Beiträge
    24
    Hmmm... 2 - 3 Dinge noch.
    Ich habe diesem Button in der Tabelle ne Löschen Funktion zugewiesen.
    Die Daten werden auch von der Festplatte gelöscht, nur die Tabelle wird nicht Aktualisiert.

    Genau das Gleich wenn ich Daten hin zu füge (Diese kommen jetzt über ein Array), die Tabelle wird wieder nicht Aktualisiert.


    Obwohl die Daten im Array vorhanden und/oder von der Festplatte entfernt sind und der Panel von mir nen .dispose(); kriegt, dann wieder geöffnet wird kann ich die veränderung erst sehen wenn ich das ganze programm schließe.

    Ich versuche mal mein Proggi in kurz hier zu posten und den überflüssigen bzw. funktionierenden teil weg zu lassen.

    @Erdal... wenn du die Lösung wieder in 30min hast geb ich dir ein aus
     
    Ich kann zwar nicht alles, aber alles probieren!

  5. #5
    MRS MRS ist offline Mitglied
    Registriert seit
    Jul 2004
    Beiträge
    24
    Hier die Code Schnipsel!

    Arbeitsplatz
    Code java:
    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
    
    import java.awt.Color;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JInternalFrame;
    import javax.swing.JScrollPane;
     
    public class Arbeitsplatz extends JFrame implements ActionListener 
    {
        private static final long serialVersionUID = 1L;
        private JButton progEndeBtn = new JButton("Beenden");
        private JButton postAusgangBtn = new JButton("Test");
        private JInternalFrame typenFenster = new JInternalFrame("Typ",false,false,false,false);
        private JInternalFrame unterFenster = new JInternalFrame("Übersicht",false,false,false,false);
        private JInternalFrame ausgangFenster = new JInternalFrame("Post Ausgang",false,false,false,false);
        
        public Arbeitsplatz() 
        {        
    //----------------------------- Stammdaten des Fensters -------------------------------------
            super("Obertester");  
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
            setSize(1024,734);         
            setResizable(false);
            setLayout(null);    
            getContentPane().setBackground(new Color(100, 200, 100)); 
     
            setJMenuBar(new Menubar().hauptMenuBar());
    //--------------------------------- Obere Button Leiste -------------------------------------       
            postAusgangBtn.setBounds(200,15,140,50);
            add(postAusgangBtn);
            progEndeBtn.setBounds(840,15,130,50);
            add(progEndeBtn);
            
    //---------------------------- Eingebautes Typen Fenster ---------------------------------
            typenFenster.getContentPane().setBackground(new Color(150, 150, 230));
            typenFenster.setVisible(true);
            typenFenster.setBounds(-3,95,160,588);
            typenFenster.add(new JScrollPane(new Daten().kontakte()));
            add(typenFenster);
            
    //----------------------------- Eingebautes Unter Fenster -----------------------------------       
            unterFenster.getContentPane().setBackground(new Color(255, 255, 255));
            unterFenster.setVisible(true);
            unterFenster.setBounds(152,95,870,588);
            add(unterFenster);
            unterFenster.setLayout(null);
     
    //----------------------------------- Button Aktivität --------------------------------------   
            progEndeBtn.addActionListener(this); 
            postAusgangBtn.addActionListener(this);
        }     
        
        public void actionPerformed(ActionEvent e) 
        {     
            if (e.getActionCommand().equals("Beenden")) 
            {            
                System.exit(0);  
            }     
            if (e.getActionCommand().equals("Test")) 
            {          
                ausgangFenster.getContentPane().setBackground(new Color(254, 254, 254));
                ausgangFenster.setVisible(true);;
                ausgangFenster.setBounds(-3,0,863,555);
                ausgangFenster.add(new Buttontabelle().post()); 
                unterFenster.add(ausgangFenster);
            }   
        }
    //===================================================================================================
     
    //===================================================================================================   
        public void showArbeitsflaeche() 
        {        
            setVisible(true); 
        }  
        public static void main(String[] args) 
        {          
                new Arbeitsplatz().showArbeitsflaeche();        
        }   
    }


    Buttontabelle
    Code java:
    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
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    
    import java.awt.Component;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener; 
    import javax.swing.*;
    import javax.swing.table.*;
    import javax.swing.table.TableCellEditor;
     
    public class Buttontabelle extends JPanel
    {  
        private static final long serialVersionUID = 1L;  
        private boolean DEBUG = false;       
        private String ausgabe;
        private JTextArea tArea;
     
        public Component post() 
        {        
            JTable table = new JTable(new MyTableModel()); 
            JTextArea textArea = new JTextArea();      
            tArea = textArea;     
            textArea.setEditable(false);      
            initColumnSizes(table);      
            JScrollPane scrollPane1 = new JScrollPane(table);  
            JScrollPane scrollPane2 = new JScrollPane(textArea);  
            JSplitPane splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT,
                                                        scrollPane1, scrollPane2);      
            add(splitPane);
            new ButtonColumn(table, 0);
            new ButtonColumn(table, 4);  
            return splitPane;  
        }    
        
        private void initColumnSizes(JTable table)
        {       
            table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
            TableColumn col0 = table.getColumnModel().getColumn(0);
            col0.setPreferredWidth(38);
            TableColumn col1 = table.getColumnModel().getColumn(1);
            col1.setPreferredWidth(220);
            TableColumn col2 = table.getColumnModel().getColumn(2);
            col2.setPreferredWidth(330);
            TableColumn col3 = table.getColumnModel().getColumn(3);
            col3.setPreferredWidth(197);
            TableColumn col4 = table.getColumnModel().getColumn(4);
            col4.setPreferredWidth(48);
     
        }    
        class MyTableModel extends AbstractTableModel 
        {      
            private static final long serialVersionUID = 1L;     
            Object[][] data = {     // wird bei mir aus Datei ausgelesen
                    { "1", "Opologisch", "Rumstehen",
                    "Sat May 13 09:27:46 CEST 2006", "Sehen" },
                    { "1", "Muki", "Training",
                    "Sat May 13 09:27:46 CEST 2006", "Sehen" },
                    { "1", "von der Volga", "Angeln",
                    "Sat May 13 09:27:46 CEST 2006", "Sehen" } };
            String[] columnNames = { "Vor", "Nach", "Sonstiges", "Datum", "Sehen" };
                
            public final Object[] longValues = {"Öffnen","platzhalten","platzhalten",
                    "platzhalten","Löschen"};
     
            public int getColumnCount() 
            {
                return columnNames.length;
            }        
            public int getRowCount() 
            {           
                return data.length;   
            }         
            public String getColumnName(int col) 
            {            
                return columnNames[col];        
            }        
            public Object getValueAt(int row, int col) 
            {            
                return data[row][col];        
            }         
            public Class<?> getColumnClass(int c) 
            {            
                return getValueAt(0, c).getClass();        
            }         
            public boolean isCellEditable(int row, int col) 
            {         
                if (col > 0 && col < 4) 
                {            
                    return false;  
                } 
                else
                {       
                    return true;           
                }       
            }        
            public void setValueAt(Object value, int row, int col)
            {            
                if (DEBUG) 
                {           
                    System.out.println("Setting value at " + row + "," + col
                            + " to " + value + " (an instance of "
                            + value.getClass() + ")");
                }
                data[row][col] = value; 
                fireTableCellUpdated(row, col);
                if (DEBUG) 
                {        
                    System.out.println("New value of data:");  
                    printDebugData();           
                }    
            }       
            private void printDebugData() 
            {           
                int numRows = getRowCount();
                int numCols = getColumnCount();
                for (int i = 0; i < numRows; i++) 
                {             
                    System.out.print("    row " + i + ":");
                    for (int j = 0; j < numCols; j++) 
                    {                  
                        System.out.print("  " + data[i][j]);    
                    }              
                    System.out.println();   
                }       
                System.out.println("--------------------------");    
            }   
        }     
     
        class ButtonColumn extends AbstractCellEditor implements TableCellRenderer,TableCellEditor, ActionListener 
        {        
            private static final long serialVersionUID = 1L; 
            JTable table;   
            JButton renderButton;     
            JButton editButton;      
            String text;       
            public ButtonColumn(JTable table, int column) 
            {        
                super();   
                this.table = table;    
                renderButton = new JButton();   
                editButton = new JButton();     
                editButton.setFocusPainted(false); 
                editButton.addActionListener(this);    
                TableColumnModel columnModel = table.getColumnModel();  
                columnModel.getColumn(column).setCellRenderer(this);   
                columnModel.getColumn(column).setCellEditor(this);    
            }        
            public Component getTableCellRendererComponent(JTable table,
                    Object value, boolean isSelected, boolean hasFocus, int row,
                    int column) 
            {          
                if (hasFocus) 
                {             
                    renderButton.setForeground(table.getForeground()); 
                    renderButton.setBackground(UIManager
                            .getColor("Button.background"));
                } 
                else if (isSelected) 
                {              
                    renderButton.setForeground(table.getSelectionForeground());   
                    renderButton.setBackground(table.getSelectionBackground());  
                } 
                else 
                {      
                    renderButton.setForeground(table.getForeground());     
                    renderButton.setBackground(UIManager                
                            .getColor("Button.background"));
                }          
                renderButton.setText((value == null) ? "" : value.toString());
                return renderButton;       
            } 
            public Component getTableCellEditorComponent(JTable table,
                    Object value, boolean isSelected, int row, int column) 
            {         
                text = (value == null) ? "" : value.toString();    
                editButton.setText(text);            
                return editButton;      
            }      
            public Object getCellEditorValue() 
            {        
                return text; 
            }         
            public void actionPerformed(ActionEvent e) 
            {     
                
                fireEditingStopped();
                ausgabe = (e.getActionCommand());  
                if(ausgabe=="1")
                {
                    tArea.setText(ausgabe);
                }
                else
                {
                    // keine Ahnung wie ich eine Reihe löschen soll
                }              
            }    
        }     
    }

    Daten
    Code java:
    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
    
    import java.awt.Color;
    import java.awt.Component;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JList;
    import javax.swing.JTextField;
    import javax.swing.event.ListSelectionEvent;
    import javax.swing.event.ListSelectionListener;
     
    public class Daten extends JFrame implements ActionListener
    {
        private static final long serialVersionUID = 1L;
        private JTextField feldC = new JTextField();
        
        public void neuerKontakt()
        {
            JButton speiBtn = new JButton("Speichern");
        
            setTitle("Neuer Typ");        
            setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
            setSize(390,180);
            setResizable(false);
            setLayout(null);    
            getContentPane().setBackground(new Color(245, 245, 255));
            setVisible(true);
     
            //--------------------- Einsetzen der JFelder / JButtons ---------------------------        
            feldC.setBounds(150,50,200,20);
            add(feldC);
            speiBtn.setBounds(200,110,150,22);
            add(speiBtn);
            speiBtn.addActionListener(this);
        }
    //-----------------------------------Typen im Hauptprogramm-----------------------------------  
        
        public Component kontakte()
        {
            String[] output = {"A","B","C","D"};// Wird sonst aus Datei ausgelesen
     
            final JList liste = new JList(output);
     
            liste.addListSelectionListener(new ListSelectionListener() 
            {
                public void valueChanged(ListSelectionEvent e) 
                {
                    if (!e.getValueIsAdjusting())
                    {
                        System.out.println(liste.getSelectedValue());
                        System.out.println(liste.getLeadSelectionIndex()+1);
                    }
                }
            });
            return liste ;
        }
        public void actionPerformed(ActionEvent e) 
        {        
            if (e.getActionCommand().equals("Speichern")) 
            {   
                // Neuer Typ wird hier auf Platte gespeichert.
                // Aber nicht angezeigt im Arbeitsplatz.
                dispose();
            }
        }
    }

    Menubar
    Code java:
    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
    
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import javax.swing.*;
     
    public class Menubar implements ActionListener 
    {   
        public JMenuBar hauptMenuBar()
        {
        
    //------------------------- Hauptprogramm Menübar --------------------------------------------
            JMenuBar myMenu = new JMenuBar();
     
            JMenu menu3 = new JMenu("Optionen");
                JMenuItem neuKont = new JMenuItem("Neuen Kontakt hinzufügen");
                neuKont.addActionListener(this);
                menu3.add(neuKont); 
            myMenu.add(menu3);
            
            return myMenu;
        }
        
     
    //  ------------------------ActionEvents---------------------------------------
        public void actionPerformed(ActionEvent e) 
        {                   
            if (e.getActionCommand().equals("Neuen Kontakt hinzufügen")) 
            {            
                new Daten().neuerKontakt();     
            } 
        }
    }
     
    Ich kann zwar nicht alles, aber alles probieren!

  6. #6
    MRS MRS ist offline Mitglied
    Registriert seit
    Jul 2004
    Beiträge
    24
    Das Problem habe ich auch mit meinem Typen Fenster.

    Ich hoffe es erschwert die Sache nicht zu sehr das ich den rest weglasse.
    Da ich alle daten auf platte speicher und die direkt auslese.
     
    Ich kann zwar nicht alles, aber alles probieren!

  7. #7
    flashray flashray ist offline Mitglied Rubin
    Registriert seit
    Sep 2005
    Ort
    Mannheim
    Beiträge
    1.325
    Ja und wo ist der Button ändern und der Button löschen?
     

  8. #8
    MRS MRS ist offline Mitglied
    Registriert seit
    Jul 2004
    Beiträge
    24
    Wenn ich auf Test drücke soll die Tabelle neu dargestellt (aktualisiert) werden.

    Der rechte Button in der Tabelle soll löschen sein.
    In diesem steht normalerweise der Pfad wo die Datei liegt.
    Das Löschen der Datei geht ja, aber es wird nicht Aktualisiert im laufendem Program.
     
    Ich kann zwar nicht alles, aber alles probieren!

  9. #9
    flashray flashray ist offline Mitglied Rubin
    Registriert seit
    Sep 2005
    Ort
    Mannheim
    Beiträge
    1.325
    Hallo Marco,

    versuchs mal mit:
    Code :
    1
    2
    3
    4
    
    MyTableModel mt = new MyTableModel();
    JTable table = new JTable(mt);
    mt.fireTableDataChanged();
    mt.fireTableStructureChanged();
    oder
    Code :
    1
    2
    3
    4
    
    JTable table = new JTable(new MyTableModel());
    DefaultTableModel dtm = (DefaultTableModel) table.getModel();
    dtm.fireTableDataChanged();
    dtm.fireTableStructureChanged();

    auch könnten vielleicht repaint() oder updateUI() oder revalidate() helfen. Einfach mal probieren.


    Vg Erdal
     

  10. #10
    MRS MRS ist offline Mitglied
    Registriert seit
    Jul 2004
    Beiträge
    24
    Kriege es irgendwie nicht auf die Reihe ;_;
     
    Ich kann zwar nicht alles, aber alles probieren!

  11. #11
    flashray flashray ist offline Mitglied Rubin
    Registriert seit
    Sep 2005
    Ort
    Mannheim
    Beiträge
    1.325
    Hallo Marco,

    hier mal kleines Beispiel wie man Zeilen hinzufügen und löschen kann. Je nach wie das JTable aufgebaut wurde könnte die Lösung anders aussehen. Hab hier mal ein DefaultTableModel verwendet.

    Code java:
    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
    
    import java.awt.BorderLayout;
    import java.awt.GridLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
     
    import javax.swing.*;
    import javax.swing.table.DefaultTableModel;
     
    public class TableUpdateExample extends JFrame implements ActionListener {
     
        private DefaultTableModel dtm = new DefaultTableModel(3,2);
     
        private JTable table = new JTable(dtm);
     
        private JPanel p = new JPanel();
     
        private JTextField t1 = new JTextField();
     
        private JTextField t2 = new JTextField();
     
        private JButton b1 = new JButton("Füge neue Zeile ein");
     
        private JButton b2 = new JButton("Lösche markierte Zeile");
     
        public TableUpdateExample() {
            super("TableExample");
            this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            this.setAlwaysOnTop(true);
            this.setLocationByPlatform(true);
     
            p.setLayout(new GridLayout(3, 2));
            p.add(new JLabel("Name:"));
            p.add(t1);
            p.add(new JLabel("Tel. Nr:"));
            p.add(t2);
            p.add(b1);
            p.add(b2);
     
            createTable();
            
            this.add(p, BorderLayout.NORTH);
            this.add(new JScrollPane(table), BorderLayout.CENTER);
     
            this.pack();
            this.setVisible(true);
     
            b1.addActionListener(this);
            b2.addActionListener(this);
        }
     
        public static void main(String[] args) {
            new TableUpdateExample();
        }
     
        public void actionPerformed(ActionEvent e) {
            if (e.getSource() == b1)
                updateTable();
            else
                deleteRow();
        }
     
        public void updateTable() {
            if (t1.getText() != null && t1.getText().length() > 0
                    && t2.getText() != null && t2.getText().length() > 0) {
                dtm.addRow(new String[] { t1.getText(), t2.getText() });
                dtm.fireTableDataChanged();
                dtm.fireTableStructureChanged();
                t1.setText("");
                t2.setText("");
            }
        }
     
        public void deleteRow() {
            if (table.getSelectedRow() != -1) {
                dtm.removeRow(table.getSelectedRow());
                dtm.fireTableDataChanged();
                dtm.fireTableStructureChanged();
            }
        }
     
        public void createTable() {
            dtm.setValueAt("Hans",0,0);
            dtm.setValueAt("12345",0,1);
            dtm.setValueAt("Peter",1,0);
            dtm.setValueAt("67890",1,1);
            dtm.setValueAt("Klaus",2,0);
            dtm.setValueAt("10293",2,1);
        }
    }


    Vg Erdal
     

  12. #12
    MRS MRS ist offline Mitglied
    Registriert seit
    Jul 2004
    Beiträge
    24
    Das hilft mir schon mal etwas weiter.
    Muss ich mir aber erstmal noch genauer anschauen.

    Dank dir!
     
    Ich kann zwar nicht alles, aber alles probieren!

  13. #13
    MRS MRS ist offline Mitglied
    Registriert seit
    Jul 2004
    Beiträge
    24
    Funktioniert leider nicht so wie ich es gerne hätte ;_;

    Gibt es denn keine lösung das die Tabelle einfach komplet gelöscht wird und bei drücken des Buttons wieder komplet neu eingelesen wird?
     
    Ich kann zwar nicht alles, aber alles probieren!

  14. #14
    flashray flashray ist offline Mitglied Rubin
    Registriert seit
    Sep 2005
    Ort
    Mannheim
    Beiträge
    1.325
    Hallo Marco,

    schau mal hier:

    Code java:
    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
    
    import java.awt.BorderLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.util.Scanner;
     
    import javax.swing.*;
    import javax.swing.table.DefaultTableModel;
     
    public class TableRefreshExample extends JFrame implements ActionListener {
     
        private JTable table = new JTable();
     
        private JButton b = new JButton("Refresh Table");
     
        public TableRefreshExample() {
            super("TableExample");
            this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            this.setAlwaysOnTop(true);
            this.setLocationByPlatform(true);
            
            refreshTable();
            
            this.add(b, BorderLayout.SOUTH);
            this.add(new JScrollPane(table), BorderLayout.CENTER);
     
            this.pack();
            this.setVisible(true);
            
            b.addActionListener(this);
        }
     
        public static void main(String[] args) {
            new TableRefreshExample();
        }
     
        public void actionPerformed(ActionEvent e) {
            refreshTable();
        }
     
        public void refreshTable() {
            DefaultTableModel dtm = new DefaultTableModel(0, 2);
     
            Scanner scan = null;
            try {
                scan = new Scanner(new File("telregister.txt"));
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            }
            String temp = "";
            String name = "";
            String tel = "";
     
            while (scan.hasNextLine()) {
                temp = scan.nextLine();
                name = temp.substring(0, temp.indexOf("/"));
                tel = temp.substring(temp.indexOf("/") + 1, temp.length());
                dtm.addRow(new String[] { name, tel });
            }
            scan.close();
            dtm.fireTableDataChanged();
            dtm.fireTableStructureChanged();
            table.setModel(dtm);
            table.updateUI();
        }
    }

    telregister.txt
    Code :
    1
    2
    3
    4
    
    Hans/12345
    Peter/98765
    Klaus/45678
    Marco/67895


    Vg Erdal
     

  15. #15
    flashray flashray ist offline Mitglied Rubin
    Registriert seit
    Sep 2005
    Ort
    Mannheim
    Beiträge
    1.325
    Hallo Marco,

    mein letzter Vorschlag wäre folgendes:
    Code :
    1
    2
    3
    4
    
    public void aktualisieretabelle(){
    mytable.setModel(new MyModel());
    mytable.updateUI();
    }
    da du ein eigenes Model verwendest, in welchem die Daten angefordert und eingelesen werden. Müsste es zum aktualisieren der Tabelle, d.h. neueinlesen der Daten aus einer Datei und anzeigen, reichen ein neues Model zu erzeugen und diese der Tabelle zu übergeben. Somit wären die alten Daten verworfen, und die neuen Daten eingelesen. Mit updateUI() müsste dann auch die Anzeige aktualisiert sein.


    Vg Erdal
     

Ähnliche Themen

  1. JPanel aktualisieren
    Von 3phasenpeterle im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 5
    Letzter Beitrag: 02.01.09, 07:17
  2. Wie, ein JTable / JPanel / JContentPane aktualisieren?
    Von smartin123 im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 1
    Letzter Beitrag: 01.11.08, 00:12
  3. .class Dateien einer Bibliothek aktualisieren
    Von constantinw im Forum Java
    Antworten: 2
    Letzter Beitrag: 19.10.07, 15:37
  4. JPanel mit Label aktualisieren
    Von weidlix im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 2
    Letzter Beitrag: 10.07.07, 12:01
  5. Antworten: 7
    Letzter Beitrag: 16.05.07, 17:03