简体   繁体   中英

Java custom control rendered differently than in gui designer

I have a custom control that I've created. It functions properly but is rendered incorrectly. 微调器设计问题

As can be seen the designer (netbeans) keeps everything neatly packed. However in the running program there are spaces and the text on the buttons does not show.

Here is the code.

public class AllocateSpinner extends javax.swing.JPanel {

  /**
   * Creates new form AllocateSpinner
   */
  public AllocateSpinner() {
    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">                          
  private void initComponents() {

    Min = new java.awt.Button();
    Decrement = new java.awt.Button();
    NumberEdit = new javax.swing.JTextField();
    Increment = new java.awt.Button();
    Max = new java.awt.Button();

    setMinimumSize(new java.awt.Dimension(100, 23));
    setPreferredSize(new java.awt.Dimension(100, 23));
    setLayout(new javax.swing.BoxLayout(this, javax.swing.BoxLayout.X_AXIS));

    Min.setFont(new java.awt.Font("Dialog", 0, 10)); // NOI18N
    Min.setLabel("|<");
    Min.setMaximumSize(new java.awt.Dimension(15, 32767));
    Min.setMinimumSize(new java.awt.Dimension(15, 23));
    Min.setPreferredSize(new java.awt.Dimension(15, 23));
    Min.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(java.awt.event.ActionEvent evt) {
        MinActionPerformed(evt);
      }
    });
    add(Min);

    Decrement.setFont(new java.awt.Font("Dialog", 0, 10)); // NOI18N
    Decrement.setLabel("<<");
    Decrement.setMaximumSize(new java.awt.Dimension(15, 32767));
    Decrement.setMinimumSize(new java.awt.Dimension(15, 23));
    Decrement.setPreferredSize(new java.awt.Dimension(15, 23));
    Decrement.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(java.awt.event.ActionEvent evt) {
        DecrementActionPerformed(evt);
      }
    });
    add(Decrement);

    NumberEdit.setText("0");
    NumberEdit.setMinimumSize(new java.awt.Dimension(20, 23));
    NumberEdit.setPreferredSize(new java.awt.Dimension(20, 23));
    NumberEdit.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(java.awt.event.ActionEvent evt) {
        NumberEditActionPerformed(evt);
      }
    });
    add(NumberEdit);

    Increment.setFont(new java.awt.Font("Dialog", 0, 10)); // NOI18N
    Increment.setLabel(">>");
    Increment.setMaximumSize(new java.awt.Dimension(15, 32767));
    Increment.setMinimumSize(new java.awt.Dimension(15, 23));
    Increment.setPreferredSize(new java.awt.Dimension(15, 23));
    Increment.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(java.awt.event.ActionEvent evt) {
        IncrementActionPerformed(evt);
      }
    });
    add(Increment);

    Max.setFont(new java.awt.Font("Dialog", 0, 10)); // NOI18N
    Max.setLabel(">|");
    Max.setMaximumSize(new java.awt.Dimension(15, 32767));
    Max.setMinimumSize(new java.awt.Dimension(15, 23));
    Max.setPreferredSize(new java.awt.Dimension(15, 23));
    Max.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(java.awt.event.ActionEvent evt) {
        MaxActionPerformed(evt);
      }
    });
    add(Max);
  }// </editor-fold>                        

  private void MinActionPerformed(java.awt.event.ActionEvent evt) {                                    
    setValue(_MinValue);
  }                                   

  private void DecrementActionPerformed(java.awt.event.ActionEvent evt) {                                          
    setValue(_Value - _ValueStep);
  }                                         

  private void IncrementActionPerformed(java.awt.event.ActionEvent evt) {                                          
    setValue(_Value + _ValueStep);
  }                                         

  private void MaxActionPerformed(java.awt.event.ActionEvent evt) {                                    
    setValue(_MaxValue);
  }                                   

  private void NumberEditActionPerformed(java.awt.event.ActionEvent evt) {                                           
    try {
      setValue(Integer.parseInt(NumberEdit.getText()));
    } catch (NumberFormatException e) {
      NumberEdit.setText(_Formatter.format(_Value));
    }
  }                                          

  // Variables declaration - do not modify                     
  private java.awt.Button Decrement;
  private java.awt.Button Increment;
  private java.awt.Button Max;
  private java.awt.Button Min;
  private javax.swing.JTextField NumberEdit;
  // End of variables declaration                   

  private int _Value = 0;
  private int _MinValue = 0;
  private int _MaxValue = 100;
  private int _ValueStep = 1;
  private NumberFormat _Formatter = NumberFormat.getIntegerInstance();

  /**
   * Sets the value. If the value is less than MinValue or greater than MaxValue the value is set to the limit.
   * @param value The value to set.
   */
  public void setValue(int value) {
    if (_Value != value) {
      int ov = _Value;
      value = Math.max(_MinValue, value);
      value = Math.min(_MaxValue, value);
      _Value = value;
      NumberEdit.setText(_Formatter.format(_Value));
      firePropertyChange("Value", ov, _Value);
    }
  }

  /**
   * Get the current value.
   * @return The current value.
   */
  public int getValue() {
    return _Value;
  }

  /**
   * Sets the minimum value. If the current value is less than the new minimum value the current value is set to minimum.
   * @param value The new minimum value to set.
   */
  public void setMinValue(int value) {
    if (_MinValue != value) {
      int ov = _MinValue;
      value = Math.min(_MaxValue, value);
      _MinValue = value;
      firePropertyChange("MinValue", ov, _MinValue);
      if (_Value < _MinValue) {
        setValue(_MinValue);
      }
    }
  }

  /**
   * Get the minimum value that can be set.
   * @return The minimum value.
   */
  public int getMinValue() {
    return _MinValue;
  }

  /**
   * Set the maximum value. If the current value is greater than the new maximum the current value is set to maximum.
   * @param value The new Maximum value.
   */
  public void setMaxValue(int value) {
    if (_MaxValue != value) {
      int ov = _MaxValue;
      value = Math.max(_MinValue, value);
      _MaxValue = value;
      firePropertyChange("MaxValue", ov, _MaxValue);
      if (_Value > _MaxValue) {
        setValue(_MaxValue);
      }
    }
  }

  /**
   * Get the maximum value that can be set.
   * @return The maximum value.
   */
  public int getMaxValue() {
    return _MaxValue;
  }

  /**
   * Set the amount that the number will be changed on increment or decrement operations.
   * @param value The step amount.
   */
  public void setValueStep(int value) {
    if (_ValueStep != value) {
      int ov = _ValueStep;
      _ValueStep = value;
      firePropertyChange("ValueStep", ov, _ValueStep);
    }
  }

  /**
   * Get the amount that the value changes on increment or decrement operations.
   * @return The step amount.
   */
  public int getValueStep() {
    return _ValueStep;
  }

  /**
   * Set the number formatter to use.
   * @param formater The formatter to use.
   */
  public void setFormatter(NumberFormat formater) {
    if (_Formatter != formater) {
      NumberFormat of = _Formatter;
      _Formatter = formater;
      NumberEdit.setText(_Formatter.format(_Value));
      this.firePropertyChange("Formatter", of, _Formatter);
    }
  }

  /**
   * Get the formatter currently being used.
   * @return The NumberFormat currently being used.
   */
  public NumberFormat getFormatter() {
    return _Formatter;
  }
}

评论“您的按钮是awt按钮,而不是摆动JButton”,随后从Button到JButton的调整似乎已经解决了此问题。

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM