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
}
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
}