/* * To change this template, choose Tools | Templates * and open the template in the editor. */ /* * JTextFieldSlider.java * * Created on 20.01.2012, 21:33:40 */ package com.gyver.matrixmover.gui.component; import com.gyver.matrixmover.gui.listener.interfaces.TFSListener; import java.util.ArrayList; import javax.swing.event.ChangeEvent; /** * * @author Jonas */ public class JTextFieldSlider extends javax.swing.JPanel { private int value = 0; private ArrayList<TFSListener> listenerList = null; /** Creates new form JTextFieldSlider */ public JTextFieldSlider() { initComponents(); listenerList = new ArrayList<TFSListener>(); } public void setValue(int value) { slider.setValue(value); textField.setText(String.valueOf(value)); this.value = value; } public int getValue() { return value; } public void addTFSListener(TFSListener listener) { listenerList.add(listener); } public void remodeTFSListener(TFSListener listener) { listenerList.remove(listener); } public void setMinimum(int minimum) { slider.setMinimum(minimum); } public void setMaximum(int maximum) { slider.setMaximum(maximum); } private void informListener() { for (TFSListener listener : listenerList) { listener.stateChanged(new ChangeEvent(this)); } } /** 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() { java.awt.GridBagConstraints gridBagConstraints; textField = new javax.swing.JTextField(); slider = new javax.swing.JSlider(); setLayout(new java.awt.GridBagLayout()); textField.setMaximumSize(new java.awt.Dimension(25, 22)); textField.setMinimumSize(new java.awt.Dimension(25, 22)); textField.setPreferredSize(new java.awt.Dimension(25, 22)); textField.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { textFieldActionPerformed(evt); } }); textField.addKeyListener(new java.awt.event.KeyAdapter() { public void keyTyped(java.awt.event.KeyEvent evt) { textFieldKeyTyped(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 0; gridBagConstraints.ipadx = 25; add(textField, gridBagConstraints); slider.addChangeListener(new javax.swing.event.ChangeListener() { public void stateChanged(javax.swing.event.ChangeEvent evt) { sliderStateChanged(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 0; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(0, 10, 0, 0); add(slider, gridBagConstraints); }// </editor-fold>//GEN-END:initComponents private void sliderStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_sliderStateChanged textField.setText(String.valueOf(slider.getValue())); value = slider.getValue(); informListener(); }//GEN-LAST:event_sliderStateChanged private void textFieldKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_textFieldKeyTyped }//GEN-LAST:event_textFieldKeyTyped private void textFieldActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_textFieldActionPerformed int newValue = 0; try { newValue = Integer.parseInt(textField.getText()); } catch (NumberFormatException nfe) { newValue = value; } if (newValue < slider.getMinimum()) { newValue = slider.getMinimum(); } if (newValue > slider.getMaximum()) { newValue = slider.getMaximum(); } this.setValue(newValue); }//GEN-LAST:event_textFieldActionPerformed // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JSlider slider; private javax.swing.JTextField textField; // End of variables declaration//GEN-END:variables }