Wie der Titel schon sagt, vielleicht mir jemand weiterhelfen.
Habe hier eine Klasse für JSpinner und JTextfields um ihr später auf
einfache Art und Weise Methoden zu geben, gewisse Eingaben in den
Textfelder und JSpinnern zu überprüfen.
Diese Klasse baut die JSpinner und TextFields in einem Fenster zusammen:
Böser StackOverFlow. Findets einer?
Habe hier eine Klasse für JSpinner und JTextfields um ihr später auf
einfache Art und Weise Methoden zu geben, gewisse Eingaben in den
Textfelder und JSpinnern zu überprüfen.
Java:
package View;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JComboBox;
import javax.swing.JSpinner;
import javax.swing.JTextField;
import javax.swing.SpinnerNumberModel;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import Model.EventFileHandler;
public class UICreateEventTextFields implements ChangeListener{
private EventFileHandler eventFileHandler = new EventFileHandler();
private JTextField textFieldNameOfEvent = new JTextField();
private JTextField textFieldLocation = new JTextField();
private JSpinner spinnerDayStart, spinnerMonthStart, spinnerYearStart;
private JSpinner spinnerStartTimeHour, spinnerStartTimeMinute;
private JSpinner spinnerDayEnd, spinnerMonthEnd, spinnerYearEnd;
private JSpinner spinnerEndTimeHour, spinnerEndTimeMinute;
private JSpinner spinnerLoopEndDay, spinnerLoopEndMonth, spinnerLoopEndYear;
private String[] comboBoxString = {"Nicht wiederholen", "Taeglich wiederholen", "Woechentlich wiederholen", "Jaehrlich wiederholen"};
private JComboBox comboBoxIsLoop = new JComboBox(comboBoxString);
public int mComboBoxItem;
private Dimension dimSmall = new Dimension(67, 20);
private Dimension dimBig = new Dimension(120, 20);
//*****Konstruktor***********************
public UICreateEventTextFields(){}
//*********************************************************************
public JTextField textFieldNameOfEvent(){
textFieldNameOfEvent.setPreferredSize(new Dimension(180, 20));
return textFieldNameOfEvent;
}
//*********************************************************************
public JTextField textFieldLocation(){
textFieldLocation.setPreferredSize(new Dimension(180, 20));
return textFieldLocation;
}
//*********************************************************************
public JSpinner spinnerDayStart(int set, int min, int max, int step){
SpinnerNumberModel model = new SpinnerNumberModel(set, min, max, step);
spinnerDayStart = new JSpinner(model);
spinnerDayStart.addChangeListener(this);
spinnerDayStart.setSize(dimSmall);
return spinnerDayStart;
}
//*********************************************************************
public JSpinner spinnerMonthStart(int set, int min, int max, int step){
SpinnerNumberModel model = new SpinnerNumberModel(set, min, max, step);
spinnerMonthStart = new JSpinner(model);
// spinnerMonthStart.addChangeListener(this);
spinnerMonthStart.setSize(dimSmall);
return spinnerMonthStart;
}
//*********************************************************************
public JSpinner spinnerYearStart(int set, int min, int max, int step){
SpinnerNumberModel model = new SpinnerNumberModel(set, min, max, step);
spinnerYearStart = new JSpinner(model);
// spinnerYearStart.addChangeListener(this);
spinnerYearStart.setSize(dimSmall);
return spinnerYearStart;
}
//*********************************************************************
public JSpinner spinnerStartTimeHour(int set, int min, int max, int step){
SpinnerNumberModel model = new SpinnerNumberModel(set, min, max, step);
spinnerStartTimeHour = new JSpinner(model);
// spinnerStartTimeHour.addChangeListener(this);
spinnerStartTimeHour.setSize(dimSmall);
return spinnerStartTimeHour;
}
//*********************************************************************
public JSpinner spinnerStartTimeMinute(int set, int min, int max, int step){
SpinnerNumberModel model = new SpinnerNumberModel(set, min, max, step);
spinnerStartTimeMinute = new JSpinner(model);
// spinnerStartTimeMinute.addChangeListener(this);
spinnerStartTimeMinute.setSize(dimSmall);
return spinnerStartTimeMinute;
}
//*********************************************************************
public JSpinner spinnerDayEnd(int set, int min, int max, int step){
SpinnerNumberModel model = new SpinnerNumberModel(set, min, max, step);
spinnerDayEnd = new JSpinner(model);
// spinnerDayEnd.addChangeListener(this);
spinnerDayEnd.setSize(dimSmall);
return spinnerDayEnd;
}
//*********************************************************************
public JSpinner spinnerMonthEnd(int set, int min, int max, int step){
SpinnerNumberModel model = new SpinnerNumberModel(set, min, max, step);
spinnerMonthEnd = new JSpinner(model);
// spinnerMonthEnd.addChangeListener(this);
spinnerMonthEnd.setSize(dimSmall);
return spinnerMonthEnd;
}
//*********************************************************************
public JSpinner spinnerYearEnd(int set, int min, int max, int step){
SpinnerNumberModel model = new SpinnerNumberModel(set, min, max, step);
spinnerYearEnd = new JSpinner(model);
// spinnerYearEnd.addChangeListener(this);
spinnerYearEnd.setSize(dimSmall);
return spinnerYearEnd;
}
//*********************************************************************
public JSpinner spinnerEndTimeHour(int set, int min, int max, int step){
SpinnerNumberModel model = new SpinnerNumberModel(set, min, max, step);
spinnerEndTimeHour = new JSpinner(model);
// spinnerEndTimeHour.addChangeListener(this);
spinnerEndTimeHour.setSize(dimSmall);
return spinnerEndTimeHour;
}
//*********************************************************************
public JSpinner spinnerEndTimeMinute(int set, int min, int max, int step){
SpinnerNumberModel model = new SpinnerNumberModel(set, min, max, step);
spinnerEndTimeMinute = new JSpinner(model);
// spinnerEndTimeMinute.addChangeListener(this);
spinnerEndTimeMinute.setSize(dimSmall);
return spinnerEndTimeMinute;
}
//*********************************************************************
public JSpinner spinnerLoopEndDay(int set, int min, int max, int step){
SpinnerNumberModel model = new SpinnerNumberModel(set, min, max, step);
spinnerLoopEndDay = new JSpinner(model);
// spinnerLoopEndDay.addChangeListener(this);
spinnerLoopEndDay.setSize(dimBig);
return spinnerLoopEndDay;
}
//*********************************************************************
public JSpinner spinnerLoopEndMonth(int set, int min, int max, int step){
SpinnerNumberModel model = new SpinnerNumberModel(set, min, max, step);
spinnerLoopEndMonth = new JSpinner(model);
// spinnerLoopEndMonth.addChangeListener(this);
spinnerLoopEndMonth.setSize(dimBig);
return spinnerLoopEndMonth;
}
//*********************************************************************
public JSpinner spinnerLoopEndYear(int set, int min, int max, int step){
SpinnerNumberModel model = new SpinnerNumberModel(set, min, max, step);
spinnerLoopEndYear = new JSpinner(model);
// spinnerLoopEndYear.addChangeListener(this);
spinnerLoopEndYear.setSize(dimBig);
return spinnerLoopEndYear;
}
//*********************************************************************
public JComboBox comboBoxIsLoop(){
comboBoxIsLoop.setPreferredSize(new Dimension(380, 20));
comboBoxIsLoop.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
mComboBoxItem = comboBoxIsLoop.getSelectedIndex();
}
});
return comboBoxIsLoop;
}
//*********************************************************************
public int checkNameOfEvent(JTextField aTextField){
for(int i = 0; i < eventFileHandler.getEventList().getLastIndex(); i++){
if(eventFileHandler.getEventList().getEventArray()[i] == null){
continue;
}
if(eventFileHandler.getEventList().getEventArray()[i].getName().equals(textFieldNameOfEvent.getText())){
return 0;
}
}
return 1;
}
//*********************************************************************
public void stateChanged(ChangeEvent e){
JSpinner spinner = (JSpinner)e.getSource();
SpinnerNumberModel model = (SpinnerNumberModel)spinner.getModel();
if(spinner.getValue().equals(model.getMinimum())){
spinner.setValue(model.getMaximum());
}else if(spinner.getValue().equals(model.getMaximum())){
spinner.setValue(model.getMinimum());
}
}
}
Diese Klasse baut die JSpinner und TextFields in einem Fenster zusammen:
Java:
package View;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Calendar;
import java.util.GregorianCalendar;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import Controller.WorkerCreateEvent;
import Model.Event;
public class UICreateEvent{
private GregorianCalendar cal = new GregorianCalendar();
private Event mEvent;
private UICreateEventTextFields uiTextFields = new UICreateEventTextFields();
private JFrame frame = new JFrame("Termin erstellen");
private JPanel mainPanel = new JPanel();
private JPanel panelTop = new JPanel();
private JPanel panelStart = new JPanel();
private JPanel panelEnd = new JPanel();
private JPanel panelName = new JPanel();
private JPanel panelLocation = new JPanel();
private JPanel panelKindOf = new JPanel();
private JPanel panelStartDate = new JPanel();
private JPanel panelStartTime = new JPanel();
private JPanel panelEndDate = new JPanel();
private JPanel panelEndTime = new JPanel();
private JPanel panelLoop = new JPanel();
private JPanel panelButtons = new JPanel();
private JButton buttonCreate = new JButton("OK");
private JButton buttonCancel = new JButton("Abbrechen");
private Color gray = new Color(100, 100, 100);
//*****Konstruktor***********************
public UICreateEvent(Event aEvent){
mEvent = aEvent;
initEventDatas();
}
//*********************************************************************
public void mainWindow(){
frame.setResizable(false);
frame.add(mainPanel());
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
//*********************************************************************
private JPanel mainPanel(){
mainPanel.setLayout(new GridLayout(0, 1));
mainPanel.add(panelTop());
mainPanel.add(panelKindOf());
mainPanel.add(panelStart());
mainPanel.add(panelEnd());
mainPanel.add(panelLoop());
mainPanel.add(panelButtons());
return mainPanel;
}
//*********************************************************************
private JPanel panelTop(){
panelTop.setLayout(new BorderLayout());
panelTop.add(panelName(), BorderLayout.WEST);
panelTop.add(panelLocation(), BorderLayout.EAST);
return panelTop;
}
//*********************************************************************
private JPanel panelStart(){
panelStart.setLayout(new BorderLayout());
panelStart.add(panelStartDate(), BorderLayout.WEST);
panelStart.add(panelStartTime(), BorderLayout.EAST);
return panelStart;
}
//*********************************************************************
private JPanel panelEnd(){
panelEnd.setLayout(new BorderLayout());
panelEnd.add(panelEndDate(), BorderLayout.WEST);
panelEnd.add(panelEndTime(), BorderLayout.EAST);
return panelEnd;
}
//*********************************************************************
private JPanel panelName(){
panelName.add(uiTextFields.textFieldNameOfEvent());
panelName.setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.black), "Name"));
return panelName;
}
//*********************************************************************
private JPanel panelLocation(){
panelLocation.add(uiTextFields.textFieldLocation());
panelLocation.setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.black), "Ort"));
return panelLocation;
}
//*********************************************************************
private JPanel panelKindOf(){
panelKindOf.add(uiTextFields.comboBoxIsLoop());
panelKindOf.setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.black), "Termin wiederholen?"));
return panelKindOf;
}
//*********************************************************************
private JPanel panelStartDate(){
panelStartDate.add(uiTextFields.spinnerDayStart(cal.get(Calendar.DATE), 0, cal.getActualMaximum(Calendar.DAY_OF_MONTH) + 1, 1));
panelStartDate.add(uiTextFields.spinnerMonthStart(cal.get(Calendar.MONTH), 0, cal.getActualMaximum(Calendar.MONTH) + 1, 1));
panelStartDate.add(uiTextFields.spinnerYearStart(cal.get(Calendar.YEAR), 0, cal.getActualMaximum(Calendar.YEAR) + 1, 1));
panelStartDate.setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.black), "Start-Datum"));
return panelStartDate;
}
//*********************************************************************
private JPanel panelStartTime(){
panelStartTime.add(uiTextFields.spinnerStartTimeHour(cal.get(Calendar.HOUR), 0, cal.getActualMaximum(Calendar.HOUR) + 1, 1));
panelStartTime.add(uiTextFields.spinnerStartTimeMinute(cal.get(Calendar.MINUTE), 0, cal.getActualMaximum(Calendar.MINUTE) + 1, 1));
panelStartTime.setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.black), "Start-Zeit"));
return panelStartTime;
}
//*********************************************************************
private JPanel panelEndDate(){
panelEndDate.add(uiTextFields.spinnerDayEnd(cal.get(Calendar.DATE) + 1, 0, cal.getActualMaximum(Calendar.DAY_OF_MONTH) + 1, 1));
panelEndDate.add(uiTextFields.spinnerMonthEnd(cal.get(Calendar.MONTH), 0, cal.getActualMaximum(Calendar.MONTH) + 1, 1));
panelEndDate.add(uiTextFields.spinnerYearEnd(cal.get(Calendar.YEAR), 0, cal.getActualMaximum(Calendar.YEAR) + 1, 1));
panelEndDate.setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.black), "End-Datum"));
return panelEndDate;
}
//*********************************************************************
private JPanel panelEndTime(){
panelEndTime.add(uiTextFields.spinnerEndTimeHour(cal.get(Calendar.HOUR) + 1, 0, cal.getActualMaximum(Calendar.HOUR) + 1, 1));
panelEndTime.add(uiTextFields.spinnerEndTimeMinute(cal.get(Calendar.MINUTE), 0, cal.getActualMaximum(Calendar.MINUTE) + 1, 1));
panelEndTime.setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.black), "End-Zeit"));
return panelEndTime;
}
//*********************************************************************
private JPanel panelLoop(){
panelLoop.add(uiTextFields.spinnerLoopEndDay(cal.get(Calendar.DATE), 0, cal.getActualMaximum(Calendar.DATE) + 1, 1));
panelLoop.add(uiTextFields.spinnerLoopEndMonth(cal.get(Calendar.MONTH) + 1, 0, cal.getActualMaximum(Calendar.MONTH) + 1, 1));
panelLoop.add(uiTextFields.spinnerLoopEndYear(cal.get(Calendar.YEAR), 0, cal.getActualMaximum(Calendar.YEAR) + 1, 1));
panelLoop.setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.black), "Wiederholungs-Ende"));
return panelLoop;
}
//*********************************************************************
private JPanel panelButtons(){
panelButtons.setLayout(new BorderLayout());
panelButtons.add(buttonCreate(), BorderLayout.CENTER);
panelButtons.add(buttonCancel(), BorderLayout.EAST);
return panelButtons;
}
//*********************************************************************
private JButton buttonCreate(){
buttonCreate.setPreferredSize(new Dimension(190, 20));
buttonCreate.setBackground(gray);
buttonCreate.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
WorkerCreateEvent workerCreateEvent = new WorkerCreateEvent();
workerCreateEvent.setDatas(uiTextFields.textFieldNameOfEvent().getText(),
uiTextFields.textFieldLocation().getText());
}
});
return buttonCreate;
}
//*********************************************************************
private JButton buttonCancel(){
buttonCancel.setPreferredSize(new Dimension(190, 20));
buttonCancel.setBackground(gray);
buttonCancel.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
frame.dispose();
}
});
return buttonCancel;
}
//*********************************************************************
private void initEventDatas(){
cal.set(mEvent.getStartYear(), mEvent.getStartMonth(), mEvent.getStartDay());
}
}
Böser StackOverFlow. Findets einer?