tutorials.de Buch-Aktion 05/2012
Seite 1 von 4 1234 LetzteLetzte
ERLEDIGT
JA
ANTWORTEN
49
ZUGRIFFE
1319
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    javama javama ist offline Mitglied Gold
    Registriert seit
    Feb 2011
    Beiträge
    102
    Hallo,
    ich habe vor kurzem eine Tabelle mit Swing erstellt , die Tabelle hat folgende spalten
    (Name, Vorname, Wohnort, Alter , Verheiratet -Boolean-Checkbox), die daten sollen über ein JDialog eingegeben werden, das habe ich auch erstellt.
    das problem jetzt wenn ich die daten eingebe und OK drücke werden diese nicht in die tabelle angezeigt (das ganze jetzt ohne persistence ) ich habe keine datenbank , will erst mal nur so probieren. also einfach die daten über JDialog eingeben und in der tabelle anzeigen

    hat vielleicht jemand eine Idee, was mir noch fehlt?

    ich danke euch im voraus
     

  2. #2
    Avatar von vfl_freak
    vfl_freak vfl_freak ist offline Mitglied Diamant
    Registriert seit
    Aug 2007
    Ort
    Niedersachsen
    Beiträge
    2.161
    Moin,

    Zitat Zitat von javama Beitrag anzeigen
    hat vielleicht jemand eine Idee, was mir noch fehlt?
    Nein ... aber ich kann Dir sagen, was uns hier fehlt :

    der relevante Code ! ! !

    Gruß
    Klaus
    SE bedankt sich. 
    Es ist noch kein Meister vom Himmel gefallen - sonst hätte man schon längst seine Leiche gefunden !!

    Falls ich helfen konnte, wäre eine Bewertung oder ein Danke nett ;-)
    -------------------------------------------------------------------------------------------------
    Ich beantworte keine Fragen per PN !!
    Stellt Eure Fragen im Forum - dann haben alle etwas davon !!

  3. #3
    javama javama ist offline Mitglied Gold
    Registriert seit
    Feb 2011
    Beiträge
    102
    Code gelöscht
    Geändert von javama (21.10.11 um 09:45 Uhr)
     

  4. #4
    Avatar von vfl_freak
    vfl_freak vfl_freak ist offline Mitglied Diamant
    Registriert seit
    Aug 2007
    Ort
    Niedersachsen
    Beiträge
    2.161
    Moin,

    hmm, habe jetzt mal auf die Schnelle da durchgescrollt, um den relevanten Code zu finden

    Ich sehe zwar im "actionPerformed" zum buttonOK, dass Du da Daten ermittelst, aber wo werden sie denn in Tabelle eingefügt? (TableModel ?)

    Gruß
    Klaus
     
    Es ist noch kein Meister vom Himmel gefallen - sonst hätte man schon längst seine Leiche gefunden !!

    Falls ich helfen konnte, wäre eine Bewertung oder ein Danke nett ;-)
    -------------------------------------------------------------------------------------------------
    Ich beantworte keine Fragen per PN !!
    Stellt Eure Fragen im Forum - dann haben alle etwas davon !!

  5. #5
    javama javama ist offline Mitglied Gold
    Registriert seit
    Feb 2011
    Beiträge
    102
    das ist der Punkt!
    wie konnte ich das machen dass die Daten in MitarbeiterGui eingefügt werden?
     

  6. #6
    SE Tutorials.de Gastzugang
    Zitat Zitat von vfl_freak Beitrag anzeigen
    ... aber ich kann Dir sagen, was uns hier fehlt :

    der relevante Code ! ! !

    Gruß
    Klaus
    MADE MY DAY


    @TO
    Du hast aber schon mal was von Paket-Imports gehört oder ?
    Bei der langen Liste an Imports baut der Compiler aus Performance-Gründen daraus eh folgendes :

    Code java:
    1
    2
    3
    4
    
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import javax.swing.table.*;

    Das kannst du gerne mit einem de-Compiler nachprüfen. Ab einer gewissen Menge an Imports aus dem selben Paket wird auf die Strategie "importiere das gesamte Paket* gewechselt. Nur wenn es sehr wenige Imports aus dem selben Paket sind ist eine explizite Klassenangabe sinnvoll.
    Auch hat das ganze was mit Lesbarkeit und Übersicht des Codes zu tun.

    Was mir dann noch weiter aufgefallen ist :
    Code java:
    1
    
    private static final long serialVersionUID=1L;
    Du hast nicht ernsthaft vor ein JFrame zu serialisieren oder ? Davon abgesehen das diese Zeile ohne das Interface Serializable nutzlos ist und damit beim compilen eh rausfliegt *zumindest sollte sie das bei nem guten Compiler*.

    Wobei alles weitere um diese Zeile genau so Käse ist : Objekt-Erzeugungen gehören in einen Konstruktor / eine Methode ! ... NICHT in den static-class-Kontext ! Auch hier greift wieder der Compiler und verschiebt solche Zeilen automatisch in den Konstruktor. Also davon abgesehen das sowas garnicht möglich ist sieht es auch nicht sehr schön aus. *Und zeigt eigentlich das du noch sehr wenig Erfahrung mit Java hast.*

    Auch machen mich diese 4 Zeilen sehr stutzig :
    Code java:
    1
    2
    
    hauptauswahlgui.button1.addActionListener(this);
    //...
    Davon abgesehen das es nur in sehr wenigen fällen Sinn hat den Inhalt des Konstruktors in eine eigene Methode auszulagern *nichts anderes machst du ... und der Compiler macht es wieder rückgängig da nacher ALLES im Konstruktor steht* gehören solche Dinge in den Konstruktor des jeweiligen Objektes.
    Wenn du unbedingt Child-Objekten eines Objektes einen ActionListener der aktuellen Klasse übergeben willst ... dann übergib dem Konstruktor des Objektes eine Referenz auf die aktuelle Klasse *mit this*.
    Optimiert würde das *! PSEUDO-CODE ! - compilebares Beispiel* so aussehen :
    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
    
    package pseudo;
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    public class MainClass implements ActionListener
    {
        private ChildClass childObject=null;
        public MainClass()
        {
            childObject=new ChildClass(this);
        }
        public void actionPerformed(ActionEvent event)
        {
        }
    }
     
    class ChildClass
    {
        private JButton button=null;
        private ChildClass() { }    // private NULL-Konstruktor
                        // verhindert das ein Objekt ohne Übergabereferenz erzeugt werden kann
        protected ChildClass(ActionListener mainClass)
        {
            button=new JButton("BUTTON");
            button.addActionListener(mainClass);
        }
    }

    Dann fällt mir in der Klass DialogMitarbeiterEinfuegen noch dieser riesige GUI-Builder-Block auf ... da hast du dir ja einiges zusammen geklickt ... nicht gerade hilfreich für den Lerneffekt und -erfolg ... aber solange es funktioniert soll mich das nicht weiter stören ... auch wenn ich es deutlich optimierter schreiben kann.

    Und zu guter Letzt fällt mir noch genau das auf was vfl schon sagte : du hast zwar soweit die GUI komplett ... aber von der Logik her fehlt noch das wichtigste : die Daten aus dem Input-Dialog in das TableModel zu übernehmen ...
    Geändert von SE (20.10.11 um 10:48 Uhr) Grund: eine Million Typo's
     

  7. #7
    Avatar von j2se
    j2se j2se ist offline Mitglied Silber
    Registriert seit
    Oct 2011
    Beiträge
    94
    Blog-Einträge
    1
    Ich habe auch keine Collection entdeckt, welche die Daten der Tabelle verwaltet. Wäre die vorhanden, könnten die Tabelle mit

    JTable table = new JTable(data, columnNames);

    angelegt werden. Fügst Du nämlich die Daten in die JTable ein und werden die Daten geändert dann wird das auch in der JTable angezeigt.
    Geändert von j2se (20.10.11 um 11:01 Uhr)
     

  8. #8
    javama javama ist offline Mitglied Gold
    Registriert seit
    Feb 2011
    Beiträge
    102
    Zitat Zitat von SPiKEe Beitrag anzeigen
    MADE MY DAY


    @TO
    Du hast aber schon mal was von Paket-Imports gehört oder ?
    Bei der langen Liste an Imports baut der Compiler aus Performance-Gründen daraus eh folgendes :

    Code java:
    1
    2
    3
    4
    
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import javax.swing.table.*;

    Das kannst du gerne mit einem de-Compiler nachprüfen. Ab einer gewissen Menge an Imports aus dem selben Paket wird auf die Strategie "importiere das gesamte Paket* gewechselt. Nur wenn es sehr wenige Imports aus dem selben Paket sind ist eine explizite Klassenangabe sinnvoll.
    Auch hat das ganze was mit Lesbarkeit und Übersicht des Codes zu tun.

    Was mir dann noch weiter aufgefallen ist :
    Code java:
    1
    
    private static final long serialVersionUID=1L;
    Du hast nicht ernsthaft vor ein JFrame zu serialisieren oder ? Davon abgesehen das diese Zeile ohne das Interface Serializable nutzlos ist und damit beim compilen eh rausfliegt *zumindest sollte sie das bei nem guten Compiler*.

    Wobei alles weitere um diese Zeile genau so Käse ist : Objekt-Erzeugungen gehören in einen Konstruktor / eine Methode ! ... NICHT in den static-class-Kontext ! Auch hier greift wieder der Compiler und verschiebt solche Zeilen automatisch in den Konstruktor. Also davon abgesehen das sowas garnicht möglich ist sieht es auch nicht sehr schön aus. *Und zeigt eigentlich das du noch sehr wenig Erfahrung mit Java hast.*

    Auch machen mich diese 4 Zeilen sehr stutzig :
    Code java:
    1
    2
    
    hauptauswahlgui.button1.addActionListener(this);
    //...
    Davon abgesehen das es nur in sehr wenigen fällen Sinn hat den Inhalt des Konstruktors in eine eigene Methode auszulagern *nichts anderes machst du ... und der Compiler macht es wieder rückgängig da nacher ALLES im Konstruktor steht* gehören solche Dinge in den Konstruktor des jeweiligen Objektes.
    Wenn du unbedingt Child-Objekten eines Objektes einen ActionListener der aktuellen Klasse übergeben willst ... dann übergib dem Konstruktor des Objektes eine Referenz auf die aktuelle Klasse *mit this*.
    Optimiert würde das *! PSEUDO-CODE ! - compilebares Beispiel* so aussehen :
    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
    
    package pseudo;
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    public class MainClass implements ActionListener
    {
        private ChildClass childObject=null;
        public MainClass()
        {
            childObject=new ChildClass(this);
        }
        public void actionPerformed(ActionEvent event)
        {
        }
    }
     
    class ChildClass
    {
        private JButton button=null;
        private ChildClass() { }    // private NULL-Konstruktor
                        // verhindert das ein Objekt ohne Übergabereferenz erzeugt werden kann
        protected ChildClass(ActionListener mainClass)
        {
            button=new JButton("BUTTON");
            button.addActionListener(mainClass);
        }
    }

    Dann fällt mir in der Klass DialogMitarbeiterEinfuegen noch dieser riesige GUI-Builder-Block auf ... da hast du dir ja einiges zusammen geklickt ... nicht gerade hilfreich für den Lerneffekt und -erfolg ... aber solange es funktioniert soll mich das nicht weiter stören ... auch wenn ich es deutlich optimierter schreiben kann.

    Und zu guter Letzt fällt mir noch genau das auf was vfl schon sagte : du hast zwar soweit die GUI komplett ... aber von der Logik her fehlt noch das wichtigste : die Daten aus dem Input-Dialog in das TableModel zu übernehmen ...


    Danke für die Hinweise, ich möchte nur drauf hinweisen , dass die klassen bei mir in unterschidlichen Files sind (also getrennt ), und hier habe ich versucht sie in einem File zusammen zu schreiben , damit das einfacher für die Forum-mitglieder ist.
     

  9. #9
    SE Tutorials.de Gastzugang
    Das ist irrelevant da beim Compilen daraus eh einzlene Class-Files generiert werden. Ob du den Source jetzt in EINER Datei hast oder alles in speraten ... das spielt für die compileten Class-Files keine Rolle ...

    btw : es wäre aber übersichtlicher gewesen wenn du jeden Source in einien eigenen Code-Block gepackt hättest anstatt alles in einem ... -> Lesbarkeit.
     

  10. #10
    Avatar von j2se
    j2se j2se ist offline Mitglied Silber
    Registriert seit
    Oct 2011
    Beiträge
    94
    Blog-Einträge
    1
    Zitat Zitat von SPiKEe Beitrag anzeigen
    @TO
    Du hast aber schon mal was von Paket-Imports gehört oder ?
    Bei der langen Liste an Imports baut der Compiler aus Performance-Gründen daraus eh folgendes :

    Code java:
    1
    2
    3
    4
    
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import javax.swing.table.*;
    Egal was der Compiler daraus macht, es gehört zum schlechten Programmierstil bei Imports mit Wildcards zu arbeiten. Eines der wichtigsten Gründe sind potentielle Namenskonflikte, die daraus entstehen können.
     

  11. #11
    Avatar von Akeshihiro
    Akeshihiro Akeshihiro ist offline Mitglied Platin
    Registriert seit
    Aug 2008
    Ort
    Kirchlengern (NRW)
    Beiträge
    647
    Richtig, ob und wie der Compiler den Code optimiert, ist dem Compiler überlassen und sollte kein Einfluss auf das eigene Programmieren haben.

    SPiKEe, ich weiß, dass du stolz auf deinen Texteditor bist, aber die meisten Menschen verwenden eine IDE, die einen unterstützt und einem hilft. Und viele deine Punkte (auch in früheren Threads) haben überhaupt nichts mit dem Programmier zu tun, sondern werden so von der jeweiligen IDE erzeugt.

    Die Sache mit den Klassen in den Imports ist vollkommen irrelevant. Zum einen hat es keinen Einfluss auf die Ausführbarkeit und zum anderen machen das die meisten IDEs von sich aus so. Dafür jemanden anzufahren ist echt nich angebracht. Genauso auch das mit der serialVersionUID. Ich verwende Eclipse und lasse Eclipse das Teil auch immer nachgenerieren, wenn es nicht bereits vorhanden ist. Alle Klassen, die in der Hierarchie von java.awt.Component stehen, sind automatisch serialisierbar, daher kommt in den IDEs auch die Meldung wegen der serialVersionUID, denn Component implementiert das Serializable-Interface. Das heißt das hier
    Davon abgesehen das diese Zeile ohne das Interface Serializable nutzlos ist und damit beim compilen eh rausfliegt
    ist somit hinfällig, denn Interfaces werden genauso vererbt.

    Mach nicht jeden wegen solchen Kleinigkeiten an, ehrlich jetzt.
    Geändert von Akeshihiro (20.10.11 um 13:24 Uhr)
    sheel bedankt sich. 
    Man sagt, das Schwert eines Samurai sei seine Seele ...

    Mit den Beiträgen ist es wie mit Schwertern: Je besser die Rohstoffe sind und je öfter man diese bearbeitet, desto hochwertiger sind sie.

    Das Schmieden ist eine Kunst; Das Schreiben auch ;)

  12. #12
    javama javama ist offline Mitglied Gold
    Registriert seit
    Feb 2011
    Beiträge
    102
    also SPiKEe , ich habe schon mal einen Quellcode in mehrern Files gegeben, und da hast du gemeckert, weil die leute hier keine lust haben einzelne klassen extra zu kompielieren, deswegen habe ich heute alles in eine datei geschrieben.
    bis jetzt keiner hat mir einen vernünftigen Hinweis gegeben, alle sprechen nur über "import"
    ich denke, das wichtigste ist, dass was ich geschickt habe funktioniert, also damit kann man anfangen.(die Optimierung kann ich später machen)
    Mit einem klick auf (alt-shift-O) werden die unnötige imports entfernt.
     

  13. #13
    SE Tutorials.de Gastzugang
    @javama

    Was dein Problem ist : du verarbeitest nirgends die im Input-Dialog eingegebenen Daten und kannst daher auch nicht die nicht vorhanden Daten in die JTable einfügen ...

    Das OT wo wir hier gerade reinrutschen handelt lediglich darum das ich es persönlich nicht gerade produktiv finde wenn man kilometer lange Klassen-Imports hat obwohl der Compiler daraus größtenteils eh nur Package-Imports macht ... was hier einige anderst sehen ... und das ganze hat eigentlich nichts mit deinem eigentlichen Problem zu tun.
     

  14. #14
    Avatar von Akeshihiro
    Akeshihiro Akeshihiro ist offline Mitglied Platin
    Registriert seit
    Aug 2008
    Ort
    Kirchlengern (NRW)
    Beiträge
    647
    Ich sag ja, dass es durch die IDE gemacht wird, denn Alt+Shift+O organisiert die Imports, entfernt die unnötigen nicht nur, sondern haut auch die Wildcards weg und macht daraus vernünftige Imports.

    Aber wie dem auch sei, es wurde ja bereits gesagt, dass du irgendwie nen Model oder ne Collection, die du als Model verwenden kannst, brauchst. Ich persönlich würde mir dafür nen eigenes aus DefaultTableModel ableiten und dafür sorgen, dass es mit Objekten umgehen kann, denn es kann die Daten nur als Strings verwalten. Für dich reicht es aber für den Moment vielleicht. Mit der Methode addRow() kann man eine Zeile einfügen, das ist also sehr praktisch.

    Also schau dir mal DefaultTableModel an. Davon musst du dann ein Objekt erzeugen und es irgendwie öffentlich zugänglich machen, z.B. mit einer Methode ala getModel(), damit du darauf von Außern zugreifen kannst.
     
    Man sagt, das Schwert eines Samurai sei seine Seele ...

    Mit den Beiträgen ist es wie mit Schwertern: Je besser die Rohstoffe sind und je öfter man diese bearbeitet, desto hochwertiger sind sie.

    Das Schmieden ist eine Kunst; Das Schreiben auch ;)

  15. #15
    javama javama ist offline Mitglied Gold
    Registriert seit
    Feb 2011
    Beiträge
    102
    Zitat Zitat von Akeshihiro Beitrag anzeigen
    . Mit der Methode addRow() kann man eine Zeile einfügen, das ist also sehr praktisch.

    Also schau dir mal DefaultTableModel an. Davon musst du dann ein Objekt erzeugen und es irgendwie öffentlich zugänglich machen, z.B. mit einer Methode ala getModel(), damit du darauf von Außern zugreifen kannst.
    ich habe folgendes gemacht aber geht trotzdem nicht

    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
    
    package com.verwaltungsgui;
     
     
     
    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.GridLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.util.ArrayList;
     
    import javax.swing.JButton;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTable;
    import javax.swing.ListSelectionModel;
    import javax.swing.table.DefaultTableModel;
    import javax.swing.table.TableColumn;
    import javax.swing.table.TableRowSorter;
     
     
     
     
    public class MitarbeiterGui extends JPanel implements ActionListener{
     
        private static final long serialVersionUID = 1L;
        
        JTable table;
        DefaultTableModel tableModel = new TableModelMitCheckBox();
        
        TableRowSorter<DefaultTableModel> rowSorter = new TableRowSorter<DefaultTableModel>(tableModel);
        Mitarbeiter mitarbeiter = new Mitarbeiter();
        
        private JPanel panelCenter, panelRechts;
        private JScrollPane westScrollpane;
        private JButton buttonEinfuegen = new JButton("Datensatz Einfügen");
        private JButton buttonEinfuegenVorlage = new JButton("Datensatz Einfügen mit Vorlage");
        private JButton buttonLoechen = new JButton("Datensatz Löschen");
        private JButton buttonAendern = new JButton("Datensatz Ändern");
        
        
        public MitarbeiterGui(Mitarbeiter mitarbeiter) {
            
            this.mitarbeiter = mitarbeiter;
            
            init();
        }
     
        public void init() {
            
            table = new JTable();
            table.setModel(tableModel);
            table.setRowSorter(rowSorter);
            westScrollpane = new JScrollPane(table);
            
            panelCenter = new JPanel();
            
            westScrollpane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
            this.setLayout(new BorderLayout());
            
            tableModel.addColumn(Mitarbeiter.SPALTE1);
            tableModel.addColumn(Mitarbeiter.SPALTE2);
            tableModel.addColumn(Mitarbeiter.SPALTE3);
            tableModel.addColumn(Mitarbeiter.SPALTE4);
            tableModel.addColumn(Mitarbeiter.SPALTE5);
            
            //table.getColumn(mitarbeiter.SPALTE1).setMaxWidth(30);
            
            
            table.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
            panelCenter.add(westScrollpane);
            this.add(westScrollpane, BorderLayout.CENTER);
            
            panelRechts = new JPanel();
            panelRechts.setLayout(new GridLayout(6,1,10,10));
            panelRechts.add(new JPanel());
            panelRechts.add(buttonEinfuegen);
            panelRechts.add(buttonEinfuegenVorlage);
            panelRechts.add(buttonAendern);
            panelRechts.add(buttonLoechen);
            
            this.add(panelRechts, BorderLayout.EAST);
            
            buttonEinfuegen.addActionListener( this);
            
            
        }
        
        public String getName(){
            return "Button1";
        }
     
        @Override
        public void actionPerformed(ActionEvent arg0) {
            if(arg0.getSource() == buttonEinfuegen){
                new DialogMitarbeiterEifuegen().setVisible(true);
               
            }
        }
        
    ////*************************************   
        public void datenEinfuegen(ArrayList<Mitarbeiter> mitarbeiterList) 
        {
            
                
            if (mitarbeiterList != null) 
            {
     
                for (Mitarbeiter entry : mitarbeiterList) 
                {
                    tableModel.addRow(new Object[] { entry.getName(), entry.getVorname(), entry.getWohnort(), entry.getAlter(), entry.isVerheiratet()});
                    
                
                }
            }
     
        }
    }


    und
    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
    
     package com.verwaltungsgui;
     
    import java.awt.Container;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.util.ArrayList;
     
    import javax.swing.GroupLayout;
    import javax.swing.JButton;
    import javax.swing.JCheckBox;
    import javax.swing.JDialog;
    import javax.swing.JLabel;
    import javax.swing.JOptionPane;
    import javax.swing.JPanel;
    import javax.swing.JTextField;
    import javax.swing.GroupLayout.Alignment;
     
    public class DialogMitarbeiterEifuegen extends JDialog implements ActionListener{
        
        /**
         * 
         */
        private static final long serialVersionUID = 1L;
        MitarbeiterGuiModel mitGuiModel;
        MitarbeiterGui mitGui;
        private JLabel nachname, vorname, wohnort, alter, verheiratet;
        private JCheckBox verheiratetBox;
        public JTextField t_nachname, t_vorname, t_wohnort, t_alter;
        private Container container;
        private JButton buttonOK, buttonAbbrechen;
        Mitarbeiter mitarbeiter;
        
        
        public DialogMitarbeiterEifuegen()
        {
            
            init();
        }
     
        private void init() {
            container = this.getContentPane();
            
            JPanel panel = new JPanel();
            GroupLayout layout = new GroupLayout(panel);
            //JPanel panelUnten = new JPanel();
            panel.setLayout(layout);
            this.pack();
            nachname=new JLabel("Nachname:");
            vorname=new JLabel("Vorname:");
            wohnort=new JLabel("Wohnort:");
            alter=new JLabel("Alter:");
            verheiratet=new JLabel("Verheiratet:");
            t_nachname = new JTextField();
            
            t_vorname = new JTextField();
            t_wohnort = new JTextField();
            t_alter = new JTextField();
            verheiratetBox=new JCheckBox();
            panel.add(nachname);
            panel.add(t_nachname);
            panel.add(vorname);
            panel.add(t_vorname);
            panel.add(wohnort);
            panel.add(t_wohnort);
            panel.add(alter);
            panel.add(t_alter);
            panel.add(verheiratet);
            panel.add(verheiratetBox);
            
            buttonOK= new JButton("Einfügen");
            buttonAbbrechen = new JButton("Abbrechen");
            
            /**
             * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
             */
            
            
            /***********************************************************************
             * Turn on automatically adding gaps between components
             **********************************************************************/
            layout.setAutoCreateGaps(true);
     
            /**
             * Turn on automatically creating gaps between components that touch the
             * edge of the container and the container.
             */
            layout.setAutoCreateContainerGaps(true);
     
            /**
             * Create a sequential group for the horizontal axis.
             */
            GroupLayout.SequentialGroup hGroup = layout.createSequentialGroup();
     
            /**
             * The sequential group in turn contains two parallel groups. One
             * parallel group contains the labels, the other the text fields.
             * Putting the labels in a parallel group along the horizontal axis
             * positions them at the same x location. Variable indentation is used
             * to reinforce the level of grouping.
             */
     
            hGroup.addGroup(layout.createParallelGroup().addComponent(nachname)
                    .addComponent(vorname).addComponent(wohnort).addComponent(
                            alter).addComponent(verheiratet).addComponent(buttonOK));
            hGroup.addGroup(layout.createParallelGroup().addComponent(t_nachname)
                    .addComponent(t_vorname).addComponent(t_wohnort)
                    .addComponent(t_alter).addComponent(verheiratetBox).addComponent(buttonAbbrechen));
            layout.setHorizontalGroup(hGroup);
     
            /***********************************************************************
             * Create a sequential group for the vertical axis.
             **********************************************************************/
            GroupLayout.SequentialGroup vGroup = layout.createSequentialGroup();
     
            /***********************************************************************
             * The sequential group contains two parallel groups that align the
             * contents along the baseline. The first parallel group contains the
             * first label and text field, and the second parallel group contains
             * the second label and text field. By using a sequential group the
             * labels and text fields are positioned vertically after one another.
             **********************************************************************/
            vGroup.addGroup(layout.createParallelGroup(Alignment.BASELINE)
                    .addComponent(nachname).addComponent(t_nachname));
            vGroup.addGroup(layout.createParallelGroup(Alignment.BASELINE)
                    .addComponent(vorname).addComponent(t_vorname));
            vGroup.addGroup(layout.createParallelGroup(Alignment.BASELINE)
                    .addComponent(wohnort).addComponent(t_wohnort));
            vGroup.addGroup(layout.createParallelGroup(Alignment.BASELINE)
                    .addComponent(alter).addComponent(t_alter));
            vGroup.addGroup(layout.createParallelGroup(Alignment.BASELINE)
                    .addComponent(verheiratet).addComponent(verheiratetBox));
            vGroup.addGroup(layout.createParallelGroup(Alignment.BASELINE)
                    .addComponent(buttonOK).addComponent(buttonAbbrechen));
            
            layout.setVerticalGroup(vGroup);
     
            
            /**
             * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
             */
            
            
            container.add(panel);
        
            this.pack();
            
            this.setLocationRelativeTo(null);
            
            this.setModal(true);
            
            buttonOK.addActionListener(this);
            buttonAbbrechen.addActionListener(this);
            
        }
     
        @Override
        public void actionPerformed(ActionEvent arg0) {
            if(arg0.getSource() == buttonOK)
                
            {
                ArrayList<Mitarbeiter> mitArrayList = new ArrayList<Mitarbeiter>();
                ArrayList<Mitarbeiter> mitArrayList1 = new ArrayList<Mitarbeiter>();
                
                String name = t_nachname.getText();
                String vorname = t_vorname.getText();
                String wohnort = t_wohnort.getText();
                
                int alter=0;
                try {
                     alter = Integer.parseInt(t_alter.getText());
                } catch (Exception e) {
                    JOptionPane.showMessageDialog(buttonOK, "Das Alter ist falsch");
                }
                
                
                boolean verheiratet;
                if(verheiratetBox.isSelected())
                  verheiratet = true;
                else verheiratet = false;
                
                mitarbeiter = new Mitarbeiter(name, vorname, wohnort, alter, verheiratet);
                mitArrayList.add(mitarbeiter);
                System.out.println("********: "+mitArrayList.size());
                
                
                mitGui = new MitarbeiterGui(mitarbeiter);
                mitGui.datenEinfuegen(mitArrayList);
                
                System.out.println("Hallo "+mitarbeiter.getName()+ " Verheiratet: "+mitarbeiter.isVerheiratet()+ mitarbeiter.getAlter());
                setVisible(false);
            }
            
            else this.setVisible(false);
            
        }
        
     
    }
     

Ähnliche Themen

  1. Hinweis um JTable in JDialog zu aktualisieren
    Von axelf76 im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 3
    Letzter Beitrag: 13.08.09, 15:06
  2. Daten aus mehreren Tabellen über Joins anzeigen
    Von thinkpad im Forum Relationale Datenbanksysteme
    Antworten: 1
    Letzter Beitrag: 10.04.08, 13:08
  3. Antworten: 15
    Letzter Beitrag: 27.09.07, 15:04
  4. JTable: eine Zeile bold geschrieben anzeigen lassen
    Von ayten im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 5
    Letzter Beitrag: 20.06.07, 16:42
  5. Bild Über eine Tabellenrand anzeigen
    Von MrFreeze im Forum HTML & XHTML
    Antworten: 3
    Letzter Beitrag: 10.08.06, 12:53