Bindings, dynamische Verbindung (Vorbau mit Netbeans)

Status
Nicht offen für weitere Antworten.

Ocean-Driver

Bekanntes Mitglied
Hallo,


Ich habe eine automatisch-generierte DB-Anwendung (Netbeans).
Jetzt gibts ja die Savemethode, die folgendes ausführt:

Code:
        entityManager.getTransaction().commit();
        entityManager.getTransaction().begin();


Jetzt würde ich gern an einer Stelle statt einem normalen Feld eine ComboBox nutzen, da diese Date naus einer anderen Tabelle holt. wie kann ich das realisieren?danke!


Was ich sonst noch gern wissen, wie kann ich die Verbindung zur Datenbank dynamisch machen?Ich will ja die Verbindung nicht schon vorher angeben müssen.

Außerdem würde ich an einer Stelle gerne eine ComboBox statt einem TextField nehmen, da dort nur Daten aus einer bestimmten Spalte aus einer bestimmten Tabelle angegebven werden dürfen.

Wie realisiere ich das mit dem Binding?




gruß
ocean-driver
 
S

SlaterB

Gast
die Frage ist etwas ungenau,
was meinst du mit 'automatisch-generierte DB-Anwendung (Netbeans)',
hast du das komplette Programm als Quelltext und willst es nun beliebig modifizieren oder fragst du nach irgendwelchen Netbeans-Einstellungen?

> statt einem normalen Feld eine ComboBox nutzen, da diese Date naus einer anderen Tabelle holt. wie kann ich das realisieren?

was soll man dazu sagen? programmiere ne JComboBox, evtl. auch die JTable falls sie fehlt usw.
falls du dich damit noch nicht auskennst musst du viele Seiten Tutorial/ Lehrbuch lesen,
da kann man erstmal nix beitragen

> wie kann ich die Verbindung zur Datenbank dynamisch machen?Ich will ja die Verbindung nicht schon vorher angeben müssen.

definiere näher, was die Verbindung ausmacht,
wenn du irgendwelche Strings wie Server-Namen meinst,
dann baue dir entsprechende Textfelder oder was auch immer,
alles ist möglich

> Außerdem würde ich an einer Stelle gerne eine ComboBox statt einem TextField nehmen

dann mal los

> Wie realisiere ich das mit dem Binding?

was genau? du musst dich natürlich allgemein mit JComboBoxen auskennen,
siehe z.B.
http://java.sun.com/docs/books/tutorial/uiswing/components/combobox.html
 

Ocean-Driver

Bekanntes Mitglied
Hallo,


Es gibt in Netbeans die Möglichkeiten ein Fenster mit einer JTable, Textfields, buttons 'generieren' zu lassen. Diese Seite spiegelt dann immer eine Tabelle in der Datenbank wieder.

Jetzt habe ich an einer Stelle ja ein TextField (was automatisch generiert ist). Dies soll jedoch durch eine ComboBox ersetz werden. Doch in der Savemethode wird nur EntityManager aufgerufen:

Code:
        entityManager.getTransaction().commit();
        entityManager.getTransaction().begin();


Ich weiß jedoch nicht, wie ich so statt dem Feld die ComboBox ansteuern soll. Hier mal die Klasse:

Code:
package mediaverwaltung;

import java.awt.EventQueue;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;

public class HoerbuchmedienView extends JPanel {
    
    public HoerbuchmedienView() {
        initComponents();
        TableSelectionListener listener = new TableSelectionListener();
        masterTable.getSelectionModel().addListSelectionListener(listener);
        entityManager.getTransaction().begin();
    }
    
    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    private void initComponents() {
        bindingGroup = new org.jdesktop.beansbinding.BindingGroup();

        entityManager = javax.persistence.Persistence.createEntityManagerFactory("medienverwaltungPU").createEntityManager();
        org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(mediaverwaltung.MediaverwaltungApp.class).getContext().getResourceMap(HoerbuchmedienView.class);
        query = entityManager.createQuery(resourceMap.getString("query.query")); // NOI18N
        list = org.jdesktop.observablecollections.ObservableCollections.observableList(query.getResultList());
        hoerbuchmedienQuery = entityManager.createQuery("SELECT h FROM Hoerbuchmedien h");
        hoerbuchmedienList = hoerbuchmedienQuery.getResultList();
        medientypenQuery = entityManager.createQuery("SELECT m FROM Medientypen m");
        medientypenList = medientypenQuery.getResultList();
        masterScrollPane = new javax.swing.JScrollPane();
        masterTable = new javax.swing.JTable();
        titelLabel = new javax.swing.JLabel();
        jahrLabel = new javax.swing.JLabel();
        medientypLabel = new javax.swing.JLabel();
        tonformatLabel = new javax.swing.JLabel();
        firmaLabel = new javax.swing.JLabel();
        anzahlLabel = new javax.swing.JLabel();
        preisLabel = new javax.swing.JLabel();
        beschreibungLabel = new javax.swing.JLabel();
        titelField = new javax.swing.JTextField();
        jahrField = new javax.swing.JTextField();
        tonformatField = new javax.swing.JTextField();
        firmaField = new javax.swing.JTextField();
        anzahlField = new javax.swing.JTextField();
        preisField = new javax.swing.JTextField();
        beschreibungField = new javax.swing.JTextField();
        saveButton = new javax.swing.JButton();
        refreshButton = new javax.swing.JButton();
        newButton = new javax.swing.JButton();
        deleteButton = new javax.swing.JButton();
        medientypField = new javax.swing.JTextField();
        
        /*
        List medientypen = entityManager.createNativeQuery("select fname from Medientypen").getResultList();
        
        for(int i=0; i < medientypen.size();  i++)
        {
            medientypen.get(i).toString().replace("[", "");
            medientypField.addItem(medientypen.get(i));
        }*/
        

        FormListener formListener = new FormListener();

        setName("Form"); // NOI18N

        masterScrollPane.setName("masterScrollPane"); // NOI18N

        masterTable.setName("masterTable"); // NOI18N

        org.jdesktop.swingbinding.JTableBinding jTableBinding = org.jdesktop.swingbinding.SwingBindings.createJTableBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, hoerbuchmedienList, masterTable);
        org.jdesktop.swingbinding.JTableBinding.ColumnBinding columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${titel}"));
        columnBinding.setColumnName("Titel");
        columnBinding.setColumnClass(String.class);
        columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${jahr}"));
        columnBinding.setColumnName("Jahr");
        columnBinding.setColumnClass(Integer.class);
        columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${medientyp}"));
        columnBinding.setColumnName("Medientyp");
        columnBinding.setColumnClass(String.class);
        columnBinding.setEditable(false);
        columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${tonformat}"));
        columnBinding.setColumnName("Tonformat");
        columnBinding.setColumnClass(String.class);
        columnBinding.setEditable(false);
        columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${firma}"));
        columnBinding.setColumnName("Firma");
        columnBinding.setColumnClass(String.class);
        columnBinding.setEditable(false);
        columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${anzahl}"));
        columnBinding.setColumnName("Anzahl");
        columnBinding.setColumnClass(Integer.class);
        columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${preis}"));
        columnBinding.setColumnName("Preis");
        columnBinding.setColumnClass(Integer.class);
        columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${beschreibung}"));
        columnBinding.setColumnName("Beschreibung");
        columnBinding.setColumnClass(String.class);
        bindingGroup.addBinding(jTableBinding);
        jTableBinding.bind();
        masterScrollPane.setViewportView(masterTable);

        titelLabel.setText(resourceMap.getString("titelLabel.text")); // NOI18N
        titelLabel.setName("titelLabel"); // NOI18N

        jahrLabel.setText(resourceMap.getString("jahrLabel.text")); // NOI18N
        jahrLabel.setName("jahrLabel"); // NOI18N

        medientypLabel.setText(resourceMap.getString("medientypLabel.text")); // NOI18N
        medientypLabel.setName("medientypLabel"); // NOI18N

        tonformatLabel.setText(resourceMap.getString("tonformatLabel.text")); // NOI18N
        tonformatLabel.setName("tonformatLabel"); // NOI18N

        firmaLabel.setText(resourceMap.getString("firmaLabel.text")); // NOI18N
        firmaLabel.setName("firmaLabel"); // NOI18N

        anzahlLabel.setText(resourceMap.getString("anzahlLabel.text")); // NOI18N
        anzahlLabel.setName("anzahlLabel"); // NOI18N

        preisLabel.setText(resourceMap.getString("preisLabel.text")); // NOI18N
        preisLabel.setName("preisLabel"); // NOI18N

        beschreibungLabel.setText(resourceMap.getString("beschreibungLabel.text")); // NOI18N
        beschreibungLabel.setName("beschreibungLabel"); // NOI18N

        titelField.setName("titelField"); // NOI18N

        org.jdesktop.beansbinding.Binding binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, masterTable, org.jdesktop.beansbinding.ELProperty.create("${selectedElement.titel}"), titelField, org.jdesktop.beansbinding.BeanProperty.create("text"));
        binding.setSourceUnreadableValue(null);
        bindingGroup.addBinding(binding);
        binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ, masterTable, org.jdesktop.beansbinding.ELProperty.create("${selectedElement != null}"), titelField, org.jdesktop.beansbinding.BeanProperty.create("enabled"));
        bindingGroup.addBinding(binding);

        jahrField.setName("jahrField"); // NOI18N

        binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, masterTable, org.jdesktop.beansbinding.ELProperty.create("${selectedElement.jahr}"), jahrField, org.jdesktop.beansbinding.BeanProperty.create("text"));
        binding.setSourceUnreadableValue(null);
        bindingGroup.addBinding(binding);
        binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ, masterTable, org.jdesktop.beansbinding.ELProperty.create("${selectedElement != null}"), jahrField, org.jdesktop.beansbinding.BeanProperty.create("enabled"));
        bindingGroup.addBinding(binding);

        tonformatField.setName("tonformatField"); // NOI18N

        binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, masterTable, org.jdesktop.beansbinding.ELProperty.create("${selectedElement.tonformat}"), tonformatField, org.jdesktop.beansbinding.BeanProperty.create("text"));
        binding.setSourceUnreadableValue(null);
        bindingGroup.addBinding(binding);
        binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ, masterTable, org.jdesktop.beansbinding.ELProperty.create("${selectedElement != null}"), tonformatField, org.jdesktop.beansbinding.BeanProperty.create("enabled"));
        bindingGroup.addBinding(binding);

        firmaField.setName("firmaField"); // NOI18N

        binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, masterTable, org.jdesktop.beansbinding.ELProperty.create("${selectedElement.firma}"), firmaField, org.jdesktop.beansbinding.BeanProperty.create("text"));
        binding.setSourceUnreadableValue(null);
        bindingGroup.addBinding(binding);
        binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ, masterTable, org.jdesktop.beansbinding.ELProperty.create("${selectedElement != null}"), firmaField, org.jdesktop.beansbinding.BeanProperty.create("enabled"));
        bindingGroup.addBinding(binding);

        anzahlField.setName("anzahlField"); // NOI18N

        binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, masterTable, org.jdesktop.beansbinding.ELProperty.create("${selectedElement.anzahl}"), anzahlField, org.jdesktop.beansbinding.BeanProperty.create("text"));
        binding.setSourceUnreadableValue(null);
        bindingGroup.addBinding(binding);
        binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ, masterTable, org.jdesktop.beansbinding.ELProperty.create("${selectedElement != null}"), anzahlField, org.jdesktop.beansbinding.BeanProperty.create("enabled"));
        bindingGroup.addBinding(binding);

        preisField.setName("preisField"); // NOI18N

        binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, masterTable, org.jdesktop.beansbinding.ELProperty.create("${selectedElement.preis}"), preisField, org.jdesktop.beansbinding.BeanProperty.create("text"));
        binding.setSourceUnreadableValue(null);
        bindingGroup.addBinding(binding);
        binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ, masterTable, org.jdesktop.beansbinding.ELProperty.create("${selectedElement != null}"), preisField, org.jdesktop.beansbinding.BeanProperty.create("enabled"));
        bindingGroup.addBinding(binding);

        beschreibungField.setName("beschreibungField"); // NOI18N

        binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, masterTable, org.jdesktop.beansbinding.ELProperty.create("${selectedElement.beschreibung}"), beschreibungField, org.jdesktop.beansbinding.BeanProperty.create("text"));
        binding.setSourceUnreadableValue(null);
        bindingGroup.addBinding(binding);
        binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ, masterTable, org.jdesktop.beansbinding.ELProperty.create("${selectedElement != null}"), beschreibungField, org.jdesktop.beansbinding.BeanProperty.create("enabled"));
        bindingGroup.addBinding(binding);

        saveButton.setText(resourceMap.getString("saveButton.text")); // NOI18N
        saveButton.setName("saveButton"); // NOI18N
        saveButton.addActionListener(formListener);

        refreshButton.setText(resourceMap.getString("refreshButton.text")); // NOI18N
        refreshButton.setName("refreshButton"); // NOI18N
        refreshButton.addActionListener(formListener);

        newButton.setText(resourceMap.getString("newButton.text")); // NOI18N
        newButton.setName("newButton"); // NOI18N
        newButton.addActionListener(formListener);

        deleteButton.setText(resourceMap.getString("deleteButton.text")); // NOI18N
        deleteButton.setEnabled(false);
        deleteButton.setName("deleteButton"); // NOI18N
        deleteButton.addActionListener(formListener);

        medientypField.setName("medientypField"); // NOI18N

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
        this.setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                        .addComponent(newButton)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(deleteButton)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(refreshButton)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(saveButton))
                    .addGroup(layout.createSequentialGroup()
                        .addContainerGap()
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(titelLabel)
                            .addComponent(jahrLabel)
                            .addComponent(medientypLabel)
                            .addComponent(tonformatLabel)
                            .addComponent(firmaLabel)
                            .addComponent(anzahlLabel)
                            .addComponent(preisLabel)
                            .addComponent(beschreibungLabel))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(titelField, javax.swing.GroupLayout.DEFAULT_SIZE, 315, Short.MAX_VALUE)
                            .addComponent(jahrField, javax.swing.GroupLayout.DEFAULT_SIZE, 315, Short.MAX_VALUE)
                            .addComponent(tonformatField, javax.swing.GroupLayout.DEFAULT_SIZE, 315, Short.MAX_VALUE)
                            .addComponent(firmaField, javax.swing.GroupLayout.DEFAULT_SIZE, 315, Short.MAX_VALUE)
                            .addComponent(anzahlField, javax.swing.GroupLayout.DEFAULT_SIZE, 315, Short.MAX_VALUE)
                            .addComponent(preisField, javax.swing.GroupLayout.DEFAULT_SIZE, 315, Short.MAX_VALUE)
                            .addComponent(beschreibungField, javax.swing.GroupLayout.DEFAULT_SIZE, 315, Short.MAX_VALUE)
                            .addComponent(medientypField, javax.swing.GroupLayout.Alignment.TRAILING, 0, 315, Short.MAX_VALUE)))
                    .addGroup(layout.createSequentialGroup()
                        .addContainerGap()
                        .addComponent(masterScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 387, Short.MAX_VALUE)))
                .addContainerGap())
        );

        layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {deleteButton, newButton, refreshButton, saveButton});

        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(masterScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 130, Short.MAX_VALUE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(titelLabel)
                    .addComponent(titelField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jahrLabel)
                    .addComponent(jahrField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(medientypLabel)
                    .addComponent(medientypField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(tonformatLabel)
                    .addComponent(tonformatField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(firmaLabel)
                    .addComponent(firmaField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(anzahlLabel)
                    .addComponent(anzahlField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(preisLabel)
                    .addComponent(preisField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(beschreibungLabel)
                    .addComponent(beschreibungField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(saveButton)
                    .addComponent(refreshButton)
                    .addComponent(deleteButton)
                    .addComponent(newButton))
                .addContainerGap())
        );

        bindingGroup.bind();
        
        
        
    }

    // Code for dispatching events from components to event handlers.

    private class FormListener implements java.awt.event.ActionListener {
        FormListener() {}
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            if (evt.getSource() == saveButton) {
                HoerbuchmedienView.this.saveButtonActionPerformed(evt);
            }
            else if (evt.getSource() == refreshButton) {
                HoerbuchmedienView.this.refreshButtonActionPerformed(evt);
            }
            else if (evt.getSource() == newButton) {
                HoerbuchmedienView.this.newButtonActionPerformed(evt);
            }
            else if (evt.getSource() == deleteButton) {
                HoerbuchmedienView.this.deleteButtonActionPerformed(evt);
            }
        }
    }// </editor-fold>                        
    
    private class TableSelectionListener implements ListSelectionListener {
        
        public void valueChanged(ListSelectionEvent e) {
            if (e.getSource() == masterTable.getSelectionModel()) {
                boolean enabled = (masterTable.getSelectedRow() != -1);
                deleteButton.setEnabled(enabled);
            }
        }
        
    }
    
    private void refreshButtonActionPerformed(java.awt.event.ActionEvent evt) {                                              
        entityManager.getTransaction().rollback();
        entityManager.getTransaction().begin();
        list.clear();
        list.addAll(query.getResultList());
    }                                             
    
    private void deleteButtonActionPerformed(java.awt.event.ActionEvent evt) {                                             
        
        if(JOptionPane.showConfirmDialog(null, "Datensatz wirklich löschen?", "Datensatz löschen?", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION)
        {
        
        int[] selected = masterTable.getSelectedRows();
        List<mediaverwaltung.Hoerbuchmedien> toRemove = new ArrayList<mediaverwaltung.Hoerbuchmedien>(selected.length);
        for (int idx=0; idx<selected.length; idx++) {
            mediaverwaltung.Hoerbuchmedien h = list.get(masterTable.convertRowIndexToModel(selected[idx]));
            toRemove.add(h);
            entityManager.remove(h);
        }
        list.removeAll(toRemove);
        }
    }                                            
    
    private void newButtonActionPerformed(java.awt.event.ActionEvent evt) {                                          
        mediaverwaltung.Hoerbuchmedien h = new mediaverwaltung.Hoerbuchmedien();
        entityManager.persist(h);
        list.add(h);
        int row = list.size()-1;
        masterTable.setRowSelectionInterval(row, row);
        masterTable.scrollRectToVisible(masterTable.getCellRect(row, 0, true));
    }                                         
    
    private void saveButtonActionPerformed(java.awt.event.ActionEvent evt) {                                           
       
        if(!titelField.getText().equals(""))
        {
        entityManager.getTransaction().commit();
        entityManager.getTransaction().begin();
        
        refreshButtonActionPerformed(null);
        }
        else
        {
            JOptionPane.showMessageDialog(null, "Titel darf nicht leer sein!" );
        }

    }                                          
    
    
    // Variables declaration - do not modify                     
    private javax.swing.JTextField anzahlField;
    private javax.swing.JLabel anzahlLabel;
    private javax.swing.JTextField beschreibungField;
    private javax.swing.JLabel beschreibungLabel;
    private javax.swing.JButton deleteButton;
    private javax.persistence.EntityManager entityManager;
    private javax.swing.JTextField firmaField;
    private javax.swing.JLabel firmaLabel;
    private java.util.List<mediaverwaltung.Hoerbuchmedien> hoerbuchmedienList;
    private javax.persistence.Query hoerbuchmedienQuery;
    private javax.swing.JTextField jahrField;
    private javax.swing.JLabel jahrLabel;
    private java.util.List<mediaverwaltung.Hoerbuchmedien> list;
    private javax.swing.JScrollPane masterScrollPane;
    private javax.swing.JTable masterTable;
    private javax.swing.JTextField medientypField;
    private javax.swing.JLabel medientypLabel;
    private java.util.List<mediaverwaltung.Medientypen> medientypenList;
    private javax.persistence.Query medientypenQuery;
    private javax.swing.JButton newButton;
    private javax.swing.JTextField preisField;
    private javax.swing.JLabel preisLabel;
    private javax.persistence.Query query;
    private javax.swing.JButton refreshButton;
    private javax.swing.JButton saveButton;
    private javax.swing.JTextField titelField;
    private javax.swing.JLabel titelLabel;
    private javax.swing.JTextField tonformatField;
    private javax.swing.JLabel tonformatLabel;
    private org.jdesktop.beansbinding.BindingGroup bindingGroup;
    // End of variables declaration                   
    
    public static void open() {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                JFrame frame = new JFrame();
                frame.setContentPane(new HoerbuchmedienView());
                frame.setDefaultCloseOperation(frame.DISPOSE_ON_CLOSE);
                frame.pack();
                frame.setTitle("Hörbücher");
                frame.setVisible(true);
            }
        });
    }
    
}
 
S

SlaterB

Gast
falls du auf eine Antwort von mir wartest:
ich wiederhole gerne nochmal, dass du erst lernen musst, wie man selber eine GUI programmiert,
was eine JComboBox usw. ist,

natürlich kannst du hier auch gerne fragen, ob das jemand für dich programmiert oder Schritt für Schritt erklärt,
Sinn macht das aber nicht sehr viel und ist deswegen unwahrscheinlich
 

Ocean-Driver

Bekanntes Mitglied
Hallo,

Ich habe bereits einmal eine Datenbankanwendung (grafisch) zu Fuß programmiert. Nur dieses mal wollte ich dieses spezielle System von Netbeans nutzen um mir die Arbeit zu erleichtern. Mir ist nur nicht klar, an welcher Stelle ich das ganze jetzt genau für die Save-Methode implementieren muss (Wie ich eine ComboBox zusammenbastele, mit Daten aus einer sql-db ist mir schon klar)


gruß
ocean
 
S

SlaterB

Gast
nun, dann kann man nochmal genauer nachdenken,

also du hast einen Save-Button, wenn man den klickt,
dann wird transaction.commit()/begin() ausgeführt,

so, und dann sprichst du immer wieder von einem TextField und einer JComboBox, die du dafür haben möchtest,
dazu meine Fragen:
1.) was hat das in irgendeiner Weise mit den Save-Button oder dessen Aktion zu tun?
2.) wenn es nix damit zu tun hat, was ist dann deine Frage dazu?


> Mir ist nur nicht klar, an welcher Stelle ich das ganze jetzt genau für die Save-Methode implementieren muss

die Save-Methode gehöt zum Save-Button und ist anscheinend schon da und funktioniert?
was hat das mit der ComboBox zu tun?
 

Ocean-Driver

Bekanntes Mitglied
hallo,


Es gibt für jede Spalte in der Tabelle eine Textfield.
In der Spalte "Medientyp" besteht jedoch eine Beziehung zur Spalte "Medienname" in der Tabelle "Medientypen".
Damit diese Beziehung erhalten bleibt, will ich dort statt einer Eingabe einfach eine ComboBox haben, die alle Mediennamen auflistet.

So eine ComboBox zu bauen ist ja kein Problem, aber wenn ich jetzt ein neuen Datensatz erstellt hab und dann den Wert aus der ComboBox speichern will, hab ich natürlich ein Problem. Da ich nicht weiß wo die Savemethode Ihre daten herholt, diese ruft ja nur

entityManager.getTransaction().commit();
entityManager.getTransaction().begin();


auf.

Weißst du jetzt was ich meine?
 
S

SlaterB

Gast
eieiei, das ist ja ne komplizierte Sache,

um das Save musst du dich dann nicht kümmern, das wird die Objekte hinter der JTable speichern, wie bisher,
bleibt noch der korrekte Einbau der JComboBox IN die JTable-Spalte,

dazu kann ich nun gar nix sagen,
aber sorry dass ich dich so lange falsch verstanden habe ;)

wenn ich noch raten soll, dann kann ich mir gut vorstellen, dass es dem Binding egal ist, ob da eine JComboBox oder ein JTextField steht,
ob aber dieses feste Konstukt überhaupt den Einbau einer JComboBox ermöglicht?..
 

Ocean-Driver

Bekanntes Mitglied
Hi,


Trotzdem danke. :)

Ich hab trotzdem nochmal ein anderes Problem.
Ich hab jetzt erstmal provisorisch eine Prüfung geschrieben, die testen soll ob der eingegebende Wert in der DB auch vorhanden ist:


Code:
    public static boolean Medientyp(String medientyp)
    {
        System.out.println("Medientypen werden überprüft");
        
        //medientyp =  "[" + medientyp + "]";
        
         System.out.println("Übergebender Medientyp formatiert:" + medientyp + "\n" + "Vorhandene Medientypen werden ausgegeben:");
        boolean gefunden=false;
        List medientypen = entityManager.createNativeQuery("select fname from Medientypen").getResultList();
    
        for(int i=0; i < medientypen.size(); i++)
        {
             System.out.println(medientypen.get(i).toString());
            if(medientypen.get(i).equals(medientyp))
            {
                i = medientypen.size();
                gefunden = true;
            }
        }
          
                
        System.out.println("Gefunden: "+ gefunden);
        return gefunden;
    }



Nur, er findet nie den Wert. Wenn ich mir die Werte aus der Liste hole, krieg ich die immer mit nem [] vorne und hinten. Ich habs deswegen mit und ohne: medientyp = "[" + medientyp + "]"; probiert. Was ist denn falsch?
 
N

Nadobnykh

Gast
Hi,

das Ding sieht folgender massen aus:

du hast ein PersistenceContext (Alle aktuell vom EntityManager verwaltete Entity-Objekte) und eine Datenbank(da wo die diese Objekte her kommen ;))

entityManager.getTransaction().commit();
überträgt den aktuellen Stand im PersistenceContext in die Datenbank, und zwar in Form einer Transaktion, d.h. alle Änderungen seit dem Transactionsbeginn vorgenommen worden sind werden an die DB geschickt.

Danach wird in der Save()-@Action einfachheitshalber an der gleichen Stelle eine neue Transaction gestartet:
entityManager.getTransaction().begin();

hat hier jedoch keinen Einfluss auf die SPeicherung der Daten in der Datenbank!
(sondern auf die NÄCHSTE Speicherung, die irgendwann kommt! :))

In NETBEANS: Beim Binding ist zu beachten, dass die Komponente die man anklickt (in dem Fall JComboBox) eine Ziel-Komponente ist und wird an eine Quell-Komponente wie JTable oder gleich "list" (java.util.List-Objekt) angebunden!
(obwohl beim "Always sync" - Update Mode ist das meistens egal! )
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
B JGoodies Bindings mit JTable AWT, Swing, JavaFX & SWT 4
C Swing globale "Key Bindings" für Swing-Applikation AWT, Swing, JavaFX & SWT 6
Landei Swing Data Bindings AWT, Swing, JavaFX & SWT 4
A Multiple Bindings für JButton AWT, Swing, JavaFX & SWT 3
V Kein Fokus für Key Bindings auf JPanel bzw JApplet AWT, Swing, JavaFX & SWT 2
B Dynamische ListView-Größe, die bei Fenstergrößenänderung sich anpasst AWT, Swing, JavaFX & SWT 19
M Dynamische Zellengröße und Zeilenumbruch AWT, Swing, JavaFX & SWT 7
M Java FX dynamische Diagramme AWT, Swing, JavaFX & SWT 0
Q-bert Dynamische Komponente erzeugen AWT, Swing, JavaFX & SWT 6
4a61766120617274697374 dynamische Tree View AWT, Swing, JavaFX & SWT 2
P JavaFX Dynamische TableView AWT, Swing, JavaFX & SWT 14
G Dynamische ComboBox AWT, Swing, JavaFX & SWT 3
B Swing Dynamische JList mit Bildern AWT, Swing, JavaFX & SWT 4
S Jtable dynamische Spaltenbreite AWT, Swing, JavaFX & SWT 5
B SWT Dynamische GUI (Layoutmanager?) AWT, Swing, JavaFX & SWT 2
P Dynamische Seite zum basteln für den User AWT, Swing, JavaFX & SWT 8
B SWT TreeViewer dynamische Anzeige von Icons AWT, Swing, JavaFX & SWT 3
J Java - dynamische Anpassung an Fenstergröße? AWT, Swing, JavaFX & SWT 4
B Swing Dynamische JMenuBar AWT, Swing, JavaFX & SWT 2
C Swing Dynamische JComboBox (Filter) AWT, Swing, JavaFX & SWT 28
W "Dynamische JComboBoxes" AWT, Swing, JavaFX & SWT 5
N Swing Dynamische Controls AWT, Swing, JavaFX & SWT 5
C JTable dynamische erweitern AWT, Swing, JavaFX & SWT 2
T 2D-Grafik Statisches Hintergrundbild, dynamische Bilder drüber AWT, Swing, JavaFX & SWT 2
N Dynamische JFreechart updated UI nicht AWT, Swing, JavaFX & SWT 5
G Große dynamische ContextMenus erzeugen (Eclipse RCP) AWT, Swing, JavaFX & SWT 4
F Swing Dynamische Größenanpassung AWT, Swing, JavaFX & SWT 4
trash Dynamische JTable (SQL) AWT, Swing, JavaFX & SWT 5
L Dynamische Textgröße bei Buttons AWT, Swing, JavaFX & SWT 3
lordcarlos Dynamische und interaktive grafik AWT, Swing, JavaFX & SWT 5
T Swing JTable dynamische Zeilenhöhe AWT, Swing, JavaFX & SWT 5
U Dynamische Panel hinzufügen AWT, Swing, JavaFX & SWT 6
N Swing Dynamische JRadioButtons und Visual Editor AWT, Swing, JavaFX & SWT 4
Q Dynamische Zahl und Positionierung von Objekten AWT, Swing, JavaFX & SWT 5
S Swing Dynamische JPanels: Vertikales Strecken verhindern AWT, Swing, JavaFX & SWT 4
hdi dynamische Iteration über Components AWT, Swing, JavaFX & SWT 3
E Dynamische JComboBox AWT, Swing, JavaFX & SWT 3
F dynamische Ausgabe eines extenen Programms umleiten AWT, Swing, JavaFX & SWT 6
F Dynamische Swing Elemente AWT, Swing, JavaFX & SWT 10
G Dynamische JMenuBar AWT, Swing, JavaFX & SWT 2
T Dynamische Anpassung einer jCheckBox AWT, Swing, JavaFX & SWT 11
G Dynamische Menüs mit Liste von MRU Dateien AWT, Swing, JavaFX & SWT 2
X Dynamische linien (Position und Länge) AWT, Swing, JavaFX & SWT 4
L Dynamische Buttons erstellt, aber wie ein Event zuweisen? AWT, Swing, JavaFX & SWT 11
T dynamische anzeige? AWT, Swing, JavaFX & SWT 4
S Dynamische Ausgabe im JTextField AWT, Swing, JavaFX & SWT 7
K dynamische jlabels AWT, Swing, JavaFX & SWT 21
M dynamische Grafik in JFrame einbetten AWT, Swing, JavaFX & SWT 2
G JTable dynamische Darstellung der ankommenden Daten AWT, Swing, JavaFX & SWT 19
G JTextField & Dynamische Grössenänderung? AWT, Swing, JavaFX & SWT 8
K TableLayout - dynamische Elemente zu spät ge-updated AWT, Swing, JavaFX & SWT 3
O Dynamische Checkboxen AWT, Swing, JavaFX & SWT 21
T Dynamische GUI's AWT, Swing, JavaFX & SWT 10
T Dynamische Look&Feels AWT, Swing, JavaFX & SWT 4
K dynamische Bilder laden AWT, Swing, JavaFX & SWT 5
L Verbindung von Code und JFrame AWT, Swing, JavaFX & SWT 4
C JavaFX Edit TableView in Verbindung mit SceneBuilder AWT, Swing, JavaFX & SWT 1
L JavaFX Verbindung zwischen Beschreibung und Listener (Codebehind Klasse) AWT, Swing, JavaFX & SWT 4
D Swing Komponenten Anordnung eines Panels in Verbindung eines weiteren Panels AWT, Swing, JavaFX & SWT 9
E JMenu erscheint nach RDP-Verbindung auf falschem Desktop AWT, Swing, JavaFX & SWT 1
C JavaFX Entfernen vom "java" Menüeintrag in der Systemmenüleiste in Mac OsX in Verbindung mit JavaFX AWT, Swing, JavaFX & SWT 1
O Swing Java PhpMyAdmin verbindung AWT, Swing, JavaFX & SWT 3
P Swing Dialog zeigt keinen Inhalt in Verbindung mit JFrame AWT, Swing, JavaFX & SWT 18
C TextFeld in Verbindung zur ComboBox automatisch aktualisieren AWT, Swing, JavaFX & SWT 7
C Swing MVC Verbindung von Model und Db AWT, Swing, JavaFX & SWT 23
xehpuk Swing Box-Glue funktioniert nicht in Verbindung mit JTextField AWT, Swing, JavaFX & SWT 3
T JTextField ohne Verbindung zur Außenwelt AWT, Swing, JavaFX & SWT 3
C Swing Problem mit TableCellRenderer in Verbindung mit TableRowSorter AWT, Swing, JavaFX & SWT 2
O Verstehe ActionListener in Verbindung mit JMenuItem AWT, Swing, JavaFX & SWT 4
S Vor Exit Verbindung trennen AWT, Swing, JavaFX & SWT 3
N Problem mit URL in Verbindung mit Bildern AWT, Swing, JavaFX & SWT 17
P Verbindung View und Controller AWT, Swing, JavaFX & SWT 3
M GUI in Verbindung mit invokeLater() bzw. invokeAndWait() AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben