package bean3; import java.awt.*; import java.awt.event.*; import java.beans.*; public class BarTexto extends Panel implements java.io.Serializable{ private double maximo=1.0; private double minimo=0.0; private double indicador=0.0; TextField textField1 = new TextField(); Scrollbar scrollbar1 = new Scrollbar(); BorderLayout borderLayout1 = new BorderLayout(); private transient PropertyChangeSupport propertyChangeListeners = new PropertyChangeSupport(this); public BarTexto() { try { jbInit(); } catch (Exception ex) { ex.printStackTrace(); } } private void jbInit() throws Exception { this.setSize(new Dimension(100, 20)); textField1.setText("0.0"); textField1.setColumns(3); textField1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { textField1_actionPerformed(e); } }); textField1.addKeyListener(new java.awt.event.KeyAdapter() { public void keyTyped(KeyEvent e) { textField1_keyTyped(e); } }); scrollbar1.setValue(50); scrollbar1.setOrientation(0); scrollbar1.addAdjustmentListener(new java.awt.event.AdjustmentListener() { public void adjustmentValueChanged(AdjustmentEvent e) { scrollbar1_adjustmentValueChanged(e); } }); this.setLayout(borderLayout1); this.add(textField1, BorderLayout.WEST); this.add(scrollbar1, BorderLayout.CENTER); } void scrollbar1_adjustmentValueChanged(AdjustmentEvent e) { int pos=e.getValue(); textField1.setText(String.valueOf(valorDouble(pos))); setIndicador(valorDouble(pos)); } void textField1_keyTyped(KeyEvent e) { char c=e.getKeyChar(); if((c>='0' && c<='9')||(c=='.')||(c==KeyEvent.VK_DELETE)||(c==KeyEvent.VK_BACK_SPACE)){ return; } e.consume(); } void textField1_actionPerformed(ActionEvent e) { double pos=Double.valueOf(textField1.getText()).doubleValue(); if(posmaximo) pos=maximo; scrollbar1.setValue(valorEntero(pos)); setIndicador(pos); } private int valorEntero(double x){ return (int)((100*(x-minimo))/(maximo-minimo)); } private double valorDouble(int x){ return (minimo+x*(maximo-minimo)/100); } public synchronized void removePropertyChangeListener(PropertyChangeListener l) { propertyChangeListeners.removePropertyChangeListener(l); } public synchronized void addPropertyChangeListener(PropertyChangeListener l) { propertyChangeListeners.addPropertyChangeListener(l); } public Dimension getPreferredSize() { FontMetrics fm=getFontMetrics(getFont()); return new Dimension(20*fm.stringWidth("0"), 2*fm.getHeight()); } public Dimension getMinimumSize() { return getPreferredSize(); } public void setMaximo(double newMaximo) { maximo = newMaximo; } public double getMaximo() { return maximo; } public void setMinimo(double newMinimo) { minimo = newMinimo; } public double getMinimo() { return minimo; } public void setIndicador(double newIndicador) { if(newIndicadormaximo) newIndicador=maximo; double oldIndicador = indicador; indicador = newIndicador; textField1.setText(String.valueOf(indicador)); scrollbar1.setValue(valorEntero(indicador)); propertyChangeListeners.firePropertyChange("indicador", new Double(oldIndicador), new Double(newIndicador)); } public double getIndicador() { return indicador; } }