Gebundene Eigenschaften bei Komponenten mit NetBeans verarbeiten

forsti

Mitglied
Hallo liebe Forumsmitglieder,
Ich tue mich sehr schwer mit der Weitergabe von Ereignissen aus GUI-Komponenten. Ich weis aus der Literatur, das dies mit dem property changes event erfolgen muß. NetBeans generiert dazu die erforderlichen addListener. Das ist mir prinzipiell klar.
Ich habe ein einfaches Beispielprojekt erstellt. Als Komponente habe ich ein Fenster mit 2 Spinner erstellt, die jeweils eine Jahreszahl enthalten. Die Komponente ist in einer Palette untergebracht. Ein Testprojekt enthält die Komponente und zwei Textfelder, die die eingestellten Jahreszahlen anzeigen.
Das Problem ist, das Änderungen der Jahreszahlen nicht in den Textfeldern registriert werden. Ich frage an, was in den property change Methoden genau einzutragen ist. Das Beispielprojekt füge ich als Anlage hinzu.
Meine Entwicklungsumgebung ist Netbeans 8.2 unter Windows8.1.
Ich würde mich über eine positive Antwort freuen.
Viele Grüße von Forsti

Die Quelltexte
--------------

Komponente

/**
* JInputYears.java
*
* Created on 08.Februar 2015, 14:00
* Changed on 20.Juli 2019, 18:00
*
* @author Harald
*/
package dialogs;

import java.beans.PropertyChangeSupport;
import java.beans.PropertyChangeListener;
import java.util.*;
import javax.swing.SpinnerListModel;
import japc.time.*;
import calendar.DateTimeStruct;


/**
* Komponentenklasse zur Eingabe eines Jahres oder einer Jahresfolge
*/
public class JInputYears extends javax.swing.JPanel {

//- Eigenschaften
int begYear, endYear;
Integer BegYear, EndYear;


/**
* Creates new form JInputYears
*/
public JInputYears() {
initComponents();
}


/**
* 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.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {

jSpnBegYear = new javax.swing.JSpinner();
jSpnEndYear = new javax.swing.JSpinner();
jLblStartYear = new javax.swing.JLabel();
jLblEndYear = new javax.swing.JLabel();
jChkOneYear = new javax.swing.JCheckBox();
jSeparator1 = new javax.swing.JSeparator();

setBackground(java.awt.Color.cyan);

jSpnBegYear.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jSpnBegYear.setModel(new javax.swing.SpinnerNumberModel(2019, -4712, 9999, 1));
jSpnBegYear.addChangeListener(new javax.swing.event.ChangeListener() {
public void stateChanged(javax.swing.event.ChangeEvent evt) {
jSpnBegYearStateChanged(evt);
}
});
jSpnBegYear.addPropertyChangeListener(new java.beans.PropertyChangeListener() {
public void propertyChange(java.beans.PropertyChangeEvent evt) {
jSpnBegYearPropertyChange(evt);
}
});

jSpnEndYear.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jSpnEndYear.setModel(new javax.swing.SpinnerNumberModel(2019, -4712, 9999, 1));
jSpnEndYear.addChangeListener(new javax.swing.event.ChangeListener() {
public void stateChanged(javax.swing.event.ChangeEvent evt) {
jSpnEndYearStateChanged(evt);
}
});
jSpnEndYear.addPropertyChangeListener(new java.beans.PropertyChangeListener() {
public void propertyChange(java.beans.PropertyChangeEvent evt) {
jSpnEndYearPropertyChange(evt);
}
});

jLblStartYear.setForeground(java.awt.Color.blue);
jLblStartYear.setText("(Beginn-)Jahr:");

jLblEndYear.setForeground(java.awt.Color.blue);
jLblEndYear.setText("EndJahr:");

jChkOneYear.setForeground(java.awt.Color.blue);
jChkOneYear.setText("nur Beginn-Jahr");

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(21, 21, 21)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(jChkOneYear)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLblStartYear)
.addComponent(jLblEndYear))
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(jSpnEndYear, javax.swing.GroupLayout.PREFERRED_SIZE, 73, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jSpnBegYear, javax.swing.GroupLayout.PREFERRED_SIZE, 1, Short.MAX_VALUE)))
.addComponent(jSeparator1))
.addContainerGap(21, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap(12, Short.MAX_VALUE)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jSpnBegYear, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLblStartYear))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jSpnEndYear, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLblEndYear))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jSeparator1, javax.swing.GroupLayout.PREFERRED_SIZE, 5, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jChkOneYear)
.addContainerGap())
);
}// </editor-fold>//GEN-END:initComponents




private void jSpnBegYearPropertyChange(java.beans.PropertyChangeEvent evt) {//GEN-FIRST:event_jSpnBegYearPropertyChange
setBegYear(begYear);
}//GEN-LAST:event_jSpnBegYearPropertyChange

private void jSpnEndYearPropertyChange(java.beans.PropertyChangeEvent evt) {//GEN-FIRST:event_jSpnEndYearPropertyChange
// TODO add your handling code here:
}//GEN-LAST:event_jSpnEndYearPropertyChange

private void jSpnBegYearStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_jSpnBegYearStateChanged
begYear = (Integer)jSpnBegYear.getValue();
}//GEN-LAST:event_jSpnBegYearStateChanged

private void jSpnEndYearStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_jSpnEndYearStateChanged
endYear = (Integer)jSpnEndYear.getValue();
}//GEN-LAST:event_jSpnEndYearStateChanged



// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JCheckBox jChkOneYear;
private javax.swing.JLabel jLblEndYear;
private javax.swing.JLabel jLblStartYear;
private javax.swing.JSeparator jSeparator1;
private javax.swing.JSpinner jSpnBegYear;
private javax.swing.JSpinner jSpnEndYear;
// End of variables declaration//GEN-END:variables

//- Methoden
private PropertyChangeSupport changes = new PropertyChangeSupport( this );

// Setter- und Gettermethoden

/**
* Setzen des aktuellen Jahres als Beginn- und Endjahr
*/
public void setActYear()
{
// Variablen
GregorianCalendar cal = new GregorianCalendar();

// Datums- und Zeitanteile auslesen
begYear = cal.get(Calendar.YEAR);
endYear = cal.get(Calendar.YEAR);

// Beschreiben der Datum- und Zeitfelder
jSpnBegYear.setValue(begYear); jSpnEndYear.setValue(endYear);
}


public void setBegYear(int begYear) // Setzen der Jahreszahl
{
int oldBegYear = this.begYear;
this.begYear = begYear;
changes.firePropertyChange("begYear", oldBegYear, begYear);
}


public void setEndYear(int endYear) // Setzen der Jahreszahl
{
int oldEndYear = this.endYear;
this.endYear = endYear;
changes.firePropertyChange("endYear", oldEndYear, endYear);
}

public int getBegYear() { return this.begYear; } // Lesen des Jahres

public int getEndYear() { return this.endYear; } // Lesen des Jahres

}


Test der Komponente

/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package testkomponenten;

/**
*
* @author Harald
*/
public class TestYears extends javax.swing.JFrame {

int begYear, endYear;


/**
* Creates new form TestYears
*/
public TestYears() {
initComponents();

}

/**
* 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.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {

jInputYears1 = new dialogs.JInputYears();
jTextField1 = new javax.swing.JTextField();
jTextField2 = new javax.swing.JTextField();
jLabel1 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
addWindowListener(new java.awt.event.WindowAdapter() {
public void windowOpened(java.awt.event.WindowEvent evt) {
formWindowOpened(evt);
}
});

jInputYears1.addPropertyChangeListener(new java.beans.PropertyChangeListener() {
public void propertyChange(java.beans.PropertyChangeEvent evt) {
jInputYears1PropertyChange(evt);
}
});

jTextField1.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N

jTextField2.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N

jLabel1.setForeground(java.awt.Color.blue);
jLabel1.setText("BegJahr");

jLabel2.setForeground(java.awt.Color.blue);
jLabel2.setText("Endjahr");

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(32, 32, 32)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(jInputYears1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel1)
.addComponent(jLabel2))
.addGap(40, 40, 40)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jTextField1)
.addComponent(jTextField2))))
.addContainerGap(166, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(21, 21, 21)
.addComponent(jInputYears1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(45, 45, 45)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel1))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel2))
.addContainerGap(66, Short.MAX_VALUE))
);

pack();
}// </editor-fold>//GEN-END:initComponents

private void jInputYears1PropertyChange(java.beans.PropertyChangeEvent evt) {//GEN-FIRST:event_jInputYears1PropertyChange

jTextField1.setText(Integer.toString(jInputYears1.getBegYear()));
jTextField2.setText(Integer.toString(jInputYears1.getEndYear()));
}//GEN-LAST:event_jInputYears1PropertyChange

private void formWindowOpened(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowOpened
jInputYears1.setActYear();
jTextField1.setText(Integer.toString(jInputYears1.getBegYear()));
jTextField2.setText(Integer.toString(jInputYears1.getEndYear()));
}//GEN-LAST:event_formWindowOpened






/**
* @param args the command line arguments
*/
public static void main(String args[]) {
/* Set the Nimbus look and feel */
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
* For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(TestYears.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(TestYears.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(TestYears.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(TestYears.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
//</editor-fold>

/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new TestYears().setVisible(true);

}
});
}

// Variables declaration - do not modify//GEN-BEGIN:variables
private dialogs.JInputYears jInputYears1;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JTextField jTextField1;
private javax.swing.JTextField jTextField2;
// End of variables declaration//GEN-END:variables
}
 

mihe7

Top Contributor
Bitte Code-Tags verwenden: [code=Java] Dein Code formatiert eingefügt [/code]. Damit kann man das vernünftig lesen.

Ich weis aus der Literatur, das dies mit dem property changes event erfolgen muß
Nicht "muss", "kann".

Kurz zur Erklärung: eine UI-Komponente hat verschiedene Eigenschaften. Wird eine solche verändert, wird ein PropertyChangeEvent ausgelöst. Bei JSpinner betrifft dies insbesondere die Properties model und editor. Der Wert dagegen kommt aus dem Model.

Ändert sich der Wert des Models, löst dieses ein ChangeEvent aus. JSpinner registriert beim Model einen ChangeListener, um Änderungen im Model mitzubekommen. Außerdem löst JSpinner bei einer Änderung im Model ebenfalls ein ChangeEvent aus.

Prinzipiell hat man also die Wahl, einen ChangeListener beim JSpinner oder beim SpinnerModel zu registrieren. Die Registrierung beim JSpinner hat den Vorteil, dass dieser auch dann noch funktioniert, wenn das Model getauscht wird.

Wenn Du also beim JSpinner einen ChangeListener registrierst, dann kannst Du dort z. B. eintragen:

Dort kannst Du z. B. eintragen (evt kennzeichnet hier eine ChangeEvent-Instanz, die die Listener-Methode erhält)
Java:
JSpinner spinner = (JSpinner) evt.getSource(); 
Object value = spinner.getValue(); 
String text = value == null ? "" : value.toString(); 
jTextField1.setText(text);
 

forsti

Mitglied
Java:
/**
* JInputYears.java
*
* Created on 08.Februar 2015, 14:00
* Changed on 20.Juli 2019, 18:00
*
* @author Harald
*/
package dialogs;

import java.beans.PropertyChangeSupport;
import java.beans.PropertyChangeListener;
import java.util.*;
import javax.swing.SpinnerListModel;
import japc.time.*;
import calendar.DateTimeStruct;


/**
* Komponentenklasse zur Eingabe eines Jahres oder einer Jahresfolge
*/
public class JInputYears extends javax.swing.JPanel {

//- Eigenschaften
int begYear, endYear;
Integer BegYear, EndYear;


/**
* Creates new form JInputYears
*/
public JInputYears() {
initComponents();
}


/**
* 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.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {

jSpnBegYear = new javax.swing.JSpinner();
jSpnEndYear = new javax.swing.JSpinner();
jLblStartYear = new javax.swing.JLabel();
jLblEndYear = new javax.swing.JLabel();
jChkOneYear = new javax.swing.JCheckBox();
jSeparator1 = new javax.swing.JSeparator();

setBackground(java.awt.Color.cyan);

jSpnBegYear.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jSpnBegYear.setModel(new javax.swing.SpinnerNumberModel(2019, -4712, 9999, 1));
jSpnBegYear.addChangeListener(new javax.swing.event.ChangeListener() {
public void stateChanged(javax.swing.event.ChangeEvent evt) {
jSpnBegYearStateChanged(evt);
}
});
jSpnBegYear.addPropertyChangeListener(new java.beans.PropertyChangeListener() {
public void propertyChange(java.beans.PropertyChangeEvent evt) {
jSpnBegYearPropertyChange(evt);
}
});

jSpnEndYear.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jSpnEndYear.setModel(new javax.swing.SpinnerNumberModel(2019, -4712, 9999, 1));
jSpnEndYear.addChangeListener(new javax.swing.event.ChangeListener() {
public void stateChanged(javax.swing.event.ChangeEvent evt) {
jSpnEndYearStateChanged(evt);
}
});
jSpnEndYear.addPropertyChangeListener(new java.beans.PropertyChangeListener() {
public void propertyChange(java.beans.PropertyChangeEvent evt) {
jSpnEndYearPropertyChange(evt);
}
});

jLblStartYear.setForeground(java.awt.Color.blue);
jLblStartYear.setText("(Beginn-)Jahr:");

jLblEndYear.setForeground(java.awt.Color.blue);
jLblEndYear.setText("EndJahr:");

jChkOneYear.setForeground(java.awt.Color.blue);
jChkOneYear.setText("nur Beginn-Jahr");

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(21, 21, 21)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(jChkOneYear)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLblStartYear)
.addComponent(jLblEndYear))
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(jSpnEndYear, javax.swing.GroupLayout.PREFERRED_SIZE, 73, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jSpnBegYear, javax.swing.GroupLayout.PREFERRED_SIZE, 1, Short.MAX_VALUE)))
.addComponent(jSeparator1))
.addContainerGap(21, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap(12, Short.MAX_VALUE)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jSpnBegYear, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLblStartYear))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jSpnEndYear, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLblEndYear))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jSeparator1, javax.swing.GroupLayout.PREFERRED_SIZE, 5, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jChkOneYear)
.addContainerGap())
);
}// </editor-fold>//GEN-END:initComponents




private void jSpnBegYearPropertyChange(java.beans.PropertyChangeEvent evt) {//GEN-FIRST:event_jSpnBegYearPropertyChange
setBegYear(begYear);
}//GEN-LAST:event_jSpnBegYearPropertyChange

private void jSpnEndYearPropertyChange(java.beans.PropertyChangeEvent evt) {//GEN-FIRST:event_jSpnEndYearPropertyChange
// TODO add your handling code here:
}//GEN-LAST:event_jSpnEndYearPropertyChange

private void jSpnBegYearStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_jSpnBegYearStateChanged
begYear = (Integer)jSpnBegYear.getValue();
}//GEN-LAST:event_jSpnBegYearStateChanged

private void jSpnEndYearStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_jSpnEndYearStateChanged
endYear = (Integer)jSpnEndYear.getValue();
}//GEN-LAST:event_jSpnEndYearStateChanged



// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JCheckBox jChkOneYear;
private javax.swing.JLabel jLblEndYear;
private javax.swing.JLabel jLblStartYear;
private javax.swing.JSeparator jSeparator1;
private javax.swing.JSpinner jSpnBegYear;
private javax.swing.JSpinner jSpnEndYear;
// End of variables declaration//GEN-END:variables

//- Methoden
private PropertyChangeSupport changes = new PropertyChangeSupport( this );

// Setter- und Gettermethoden

/**
* Setzen des aktuellen Jahres als Beginn- und Endjahr
*/
public void setActYear()
{
// Variablen
GregorianCalendar cal = new GregorianCalendar();

// Datums- und Zeitanteile auslesen
begYear = cal.get(Calendar.YEAR);
endYear = cal.get(Calendar.YEAR);

// Beschreiben der Datum- und Zeitfelder
jSpnBegYear.setValue(begYear); jSpnEndYear.setValue(endYear);
}


public void setBegYear(int begYear) // Setzen der Jahreszahl
{
int oldBegYear = this.begYear;
this.begYear = begYear;
changes.firePropertyChange("begYear", oldBegYear, begYear);
}


public void setEndYear(int endYear) // Setzen der Jahreszahl
{
int oldEndYear = this.endYear;
this.endYear = endYear;
changes.firePropertyChange("endYear", oldEndYear, endYear);
}

public int getBegYear() { return this.begYear; } // Lesen des Jahres

public int getEndYear() { return this.endYear; } // Lesen des Jahres

}


Test der Komponente

/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package testkomponenten;

/**
*
* @author Harald
*/
public class TestYears extends javax.swing.JFrame {

int begYear, endYear;


/**
* Creates new form TestYears
*/
public TestYears() {
initComponents();

}

/**
* 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.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {

jInputYears1 = new dialogs.JInputYears();
jTextField1 = new javax.swing.JTextField();
jTextField2 = new javax.swing.JTextField();
jLabel1 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
addWindowListener(new java.awt.event.WindowAdapter() {
public void windowOpened(java.awt.event.WindowEvent evt) {
formWindowOpened(evt);
}
});

jInputYears1.addPropertyChangeListener(new java.beans.PropertyChangeListener() {
public void propertyChange(java.beans.PropertyChangeEvent evt) {
jInputYears1PropertyChange(evt);
}
});

jTextField1.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N

jTextField2.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N

jLabel1.setForeground(java.awt.Color.blue);
jLabel1.setText("BegJahr");

jLabel2.setForeground(java.awt.Color.blue);
jLabel2.setText("Endjahr");

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(32, 32, 32)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(jInputYears1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel1)
.addComponent(jLabel2))
.addGap(40, 40, 40)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jTextField1)
.addComponent(jTextField2))))
.addContainerGap(166, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(21, 21, 21)
.addComponent(jInputYears1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(45, 45, 45)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel1))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel2))
.addContainerGap(66, Short.MAX_VALUE))
);

pack();
}// </editor-fold>//GEN-END:initComponents

private void jInputYears1PropertyChange(java.beans.PropertyChangeEvent evt) {//GEN-FIRST:event_jInputYears1PropertyChange

jTextField1.setText(Integer.toString(jInputYears1.getBegYear()));
jTextField2.setText(Integer.toString(jInputYears1.getEndYear()));
}//GEN-LAST:event_jInputYears1PropertyChange

private void formWindowOpened(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowOpened
jInputYears1.setActYear();
jTextField1.setText(Integer.toString(jInputYears1.getBegYear()));
jTextField2.setText(Integer.toString(jInputYears1.getEndYear()));
}//GEN-LAST:event_formWindowOpened






/**
* @param args the command line arguments
*/
public static void main(String args[]) {
/* Set the Nimbus look and feel */
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
* For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(TestYears.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(TestYears.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(TestYears.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(TestYears.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
//</editor-fold>

/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new TestYears().setVisible(true);

}
});
}

// Variables declaration - do not modify//GEN-BEGIN:variables
private dialogs.JInputYears jInputYears1;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JTextField jTextField1;
private javax.swing.JTextField jTextField2;
// End of variables declaration//GEN-END:variables
}
Antwort Report
mihe7
mihe7
Sonntag um 14:19
Add bookm
 

forsti

Mitglied
Etwas verspätet besten Dank für Deine Antwort. Ich bin aber nicht weiter gekommen. Zunächst habe ich den Quellcode formatiert. Die vier von Dir angegebenen Anweisungen habe ich an m.E. entsprechenden Stellen eingebaut. Trotzdem bringt das nicht den erhofften Erfolg. Die Ereignisbehandlung in Java ist gedanklich bei mir noch nicht verdaut. Als Neuling im Forum habe ich organisatorische Probleme.
Viele Grüße von Forsti.
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
Airwolf89 Swing Von anderer Klasse auf Eigenschaften einer Komponente zugreifen AWT, Swing, JavaFX & SWT 5
G setToolTipText Eigenschaften AWT, Swing, JavaFX & SWT 2
O Eigenschaften größerer GUI-Objekte verwalten AWT, Swing, JavaFX & SWT 3
F JTable mit besonderen Eigenschaften AWT, Swing, JavaFX & SWT 11
S JTextField Eigenschaften AWT, Swing, JavaFX & SWT 3
B JTextFiled, JCheckBox, JSpinner Eigenschaften speichern AWT, Swing, JavaFX & SWT 2
S avi Eigenschaften AWT, Swing, JavaFX & SWT 2
G JTextPane: Eigenschaften des selektierten Bereichs abfragen AWT, Swing, JavaFX & SWT 2
D Swing Komponenten nicht sichtbar nach Start AWT, Swing, JavaFX & SWT 12
H Fehler: Zum Ausführen dieser Anwendung benötigte JavaFX-Runtime-Komponenten fehlen AWT, Swing, JavaFX & SWT 44
H Swing , GridLayout, Größenbestimmung der Komponenten im Layout AWT, Swing, JavaFX & SWT 8
BabySuna Swing Komponenten auslagern auf separate Datei AWT, Swing, JavaFX & SWT 8
B Mit ContentPane werden Komponenten angezeigt, mit SplitPane, JPanel nicht? AWT, Swing, JavaFX & SWT 6
P AWT Einzelne Komponenten zur Laufzeit austauschen? AWT, Swing, JavaFX & SWT 3
D [Swing] Anordnung von Komponenten mit GridLayout Manager AWT, Swing, JavaFX & SWT 13
L Komponenten eines Panels werden erst nach Klick darauf angezeigt AWT, Swing, JavaFX & SWT 13
E Komponenten von JScrollPane werden nicht richtig ermittelt AWT, Swing, JavaFX & SWT 2
H LayoutManager Probleme mit Positionierung/Abständen der Komponenten AWT, Swing, JavaFX & SWT 14
dereki2000 Swing JFrame nah hinzufügen von Komponenten akualisieren. AWT, Swing, JavaFX & SWT 2
L Swing Komponenten erst nach Resize sichtbar AWT, Swing, JavaFX & SWT 2
S Swing Panel übernimmt komponenten von anderem AWT, Swing, JavaFX & SWT 7
T Reihenfolge der Komponenten im einem JFrame AWT, Swing, JavaFX & SWT 8
P Gleichmäßige Anodnung von Komponenten im migLayout AWT, Swing, JavaFX & SWT 2
DaCrazyJavaExpert Swing Komponenten genauer anordnen. AWT, Swing, JavaFX & SWT 13
DaCrazyJavaExpert Swing Komponenten in GridBagLayout werden Falsch angeordnet AWT, Swing, JavaFX & SWT 1
P Größe und Ausrichtung von Komponenten festlegen AWT, Swing, JavaFX & SWT 13
MaxG. Swing Swing Komponenten zur Laufzeit hinzufügen AWT, Swing, JavaFX & SWT 2
D Swing Komponenten Anordnung eines Panels in Verbindung eines weiteren Panels AWT, Swing, JavaFX & SWT 9
N Swing Wie Programm strukturieren? (Dynamisch Komponenten hinzufügen) AWT, Swing, JavaFX & SWT 1
Neumi5694 LookAndFeel Look & Feel nicht angezeigter Komponenten ändern AWT, Swing, JavaFX & SWT 6
D JavaFX GUI Komponenten werden langsam bei größerer Datenmenge AWT, Swing, JavaFX & SWT 6
R Komponenten von JPanel bleiben unsichtbar AWT, Swing, JavaFX & SWT 2
D JavaFX Welche Komponenten vermisst ihr? Welche wären essenziell notwendig? AWT, Swing, JavaFX & SWT 8
M Datei mit Komponenten einbinden AWT, Swing, JavaFX & SWT 7
T SWT Externer zugrif auf SWT Komponenten AWT, Swing, JavaFX & SWT 3
Shams Probleme bei dem Hinzufügen von Komponenten zu einem JFrame AWT, Swing, JavaFX & SWT 3
J MouseOver bei Komponenten AWT, Swing, JavaFX & SWT 9
S Größe der Komponenten, beim ändern der größe des Frames, mit ändern! AWT, Swing, JavaFX & SWT 2
D LayoutManager GUI skalieren und deren Komponenten mit Grid(Bag)Layout-Manager. AWT, Swing, JavaFX & SWT 5
G Komponenten vergrößern sich nicht trotz Layoutmanager AWT, Swing, JavaFX & SWT 24
M JavaFX Scenebuilder eigene Komponenten AWT, Swing, JavaFX & SWT 8
A Swing per JComboBox gewünschtes Attribut auswählen und Komponenten passen sich an AWT, Swing, JavaFX & SWT 7
A JavaFX Eigene Komponenten im Scene Builder AWT, Swing, JavaFX & SWT 0
Q Swing Fenster updaten - Hinzugefügte Komponenten darstellen AWT, Swing, JavaFX & SWT 3
S BoxLayout: Anordnung der Komponenten links statt zentriert AWT, Swing, JavaFX & SWT 0
Bartertown JTable - Verschiedene Komponenten in einer Spalte unterbringen AWT, Swing, JavaFX & SWT 3
U Frame zeigt keine Komponenten AWT, Swing, JavaFX & SWT 7
G Applet Applet Komponenten flackern AWT, Swing, JavaFX & SWT 10
K LayoutManager Probleme mit 2 Komponenten AWT, Swing, JavaFX & SWT 9
M Komponenten übereinander AWT, Swing, JavaFX & SWT 7
R Komponenten werden erst nach maximierung des Frames sichtbar (Linux) AWT, Swing, JavaFX & SWT 5
H Swing Getter für GUI-Komponenten AWT, Swing, JavaFX & SWT 3
B Komponenten in Fenster verdrängen sich untereinander AWT, Swing, JavaFX & SWT 6
N Komponenten übereinander AWT, Swing, JavaFX & SWT 3
S Anordnung von GUI-Komponenten mit LayouManger (Problem beim anzeigen von JTextField) AWT, Swing, JavaFX & SWT 5
M Swing Komponenten enablen? AWT, Swing, JavaFX & SWT 4
X Java Komponenten jeder Zeit hinzufügen können AWT, Swing, JavaFX & SWT 3
S View-Komponenten im Controller bekannt machen AWT, Swing, JavaFX & SWT 7
D Grafische Komponenten komplett neu aufbauen (Neukonstruktion) AWT, Swing, JavaFX & SWT 5
A AWT Komponenten in JavaFX einbetten AWT, Swing, JavaFX & SWT 9
M Swing Komponenten erscheinen beim darüberfahren? AWT, Swing, JavaFX & SWT 7
H Komponenten unmittelbar nach dem Ausführen teilweise unsichtbar AWT, Swing, JavaFX & SWT 3
K GUI in Komponenten aufteilen (MVC) AWT, Swing, JavaFX & SWT 2
W Funktionen, sowie aufruf einiger Komponenten AWT, Swing, JavaFX & SWT 4
J Alle Komponenten eines JFrames durchlaufen AWT, Swing, JavaFX & SWT 2
R Swing Komponenten bleiben bei Animation unsichtbar AWT, Swing, JavaFX & SWT 7
T Unter JPanel liegende Komponenten "totschalten" AWT, Swing, JavaFX & SWT 5
morphesus Swing Komponenten werden nicht angezeigt AWT, Swing, JavaFX & SWT 8
C Swing Reihenfolge der Initialisierung von Komponenten AWT, Swing, JavaFX & SWT 6
Asamandra LayoutManager GridBagLayout - Komponenten (mit fill?) vergrößern aber Proportionen dabei erhalten? AWT, Swing, JavaFX & SWT 3
B Swing Komponenten auf JApplet setSize AWT, Swing, JavaFX & SWT 7
B Swing Komponenten auf JApplet setSize AWT, Swing, JavaFX & SWT 2
W Bildgröße automatisch an Komponenten anpassen AWT, Swing, JavaFX & SWT 3
TheWhiteShadow Swing Komponenten organisieren AWT, Swing, JavaFX & SWT 9
S Überlappung zweier Komponenten AWT, Swing, JavaFX & SWT 12
Z größe der komponenten bestimmen AWT, Swing, JavaFX & SWT 16
C GUI-Komponenten skalieren AWT, Swing, JavaFX & SWT 10
M Seltsames Problem mit Resize eines Fensters und seiner Komponenten AWT, Swing, JavaFX & SWT 2
D Swing Komponenten verstecken AWT, Swing, JavaFX & SWT 4
X Swing Resizing der Komponenten innheralb eines Panels AWT, Swing, JavaFX & SWT 2
T Swing Font für alle Komponenten ändern AWT, Swing, JavaFX & SWT 2
S Problem mit Swing Komponenten AWT, Swing, JavaFX & SWT 11
A Swing Alle Komponenten auf JFrame ermitteln AWT, Swing, JavaFX & SWT 4
E LookAndFeel Eigene Komponenten mit Synth L&F stylen AWT, Swing, JavaFX & SWT 2
S Swing Frame und Klasse extends JPanel - Komponenten zur Laufzeit austauschen AWT, Swing, JavaFX & SWT 18
S JButton und textfield.setText - Komponenten über-/verdecken sich AWT, Swing, JavaFX & SWT 15
M Komponenten übereinander prüfen AWT, Swing, JavaFX & SWT 3
W LayoutManager GridBag richtig nutzen - Komponenten richtig anordnen und automatisch vergrößern AWT, Swing, JavaFX & SWT 5
M Komponenten in anderer Reihenfolge anzeigen AWT, Swing, JavaFX & SWT 4
G swing Komponenten verrutschen ständig... AWT, Swing, JavaFX & SWT 6
D Mit GridBayLayout Komponenten anordnen AWT, Swing, JavaFX & SWT 6
N Window transparent, Komponenten nicht transparent AWT, Swing, JavaFX & SWT 11
R Farbänderung von Komponenten wird nicht wirksam AWT, Swing, JavaFX & SWT 7
P Swing Hierachie oder Reihenfolge von Komponenten AWT, Swing, JavaFX & SWT 5
T Sich überlappende Komponenten AWT, Swing, JavaFX & SWT 2
D Swing Probleme beim Anzeigen der einzelnen Komponenten AWT, Swing, JavaFX & SWT 16
R Swing Komponenten klein angezeigt AWT, Swing, JavaFX & SWT 10
D Swing Swing Komponenten verschieben AWT, Swing, JavaFX & SWT 7
B Komponenten nach Skalierung nicht mehr ansprechbar AWT, Swing, JavaFX & SWT 9
Kr0e AWT Komponenten in JPanel AWT, Swing, JavaFX & SWT 6

Ähnliche Java Themen

Neue Themen


Oben