Java自定义控件与gui设计器中呈现的控件不同

Java自定义控件与gui设计器中呈现的控件不同,java,swing,awt,Java,Swing,Awt,我已经创建了一个自定义控件。它功能正常,但渲染不正确。 可以看出,设计师(netbeans)将所有东西都整齐地打包。但是,在运行的程序中有空格,按钮上的文本不会显示 这是代码 public class AllocateSpinner extends javax.swing.JPanel { /** * Creates new form AllocateSpinner */ public AllocateSpinner() { initComponents();

我已经创建了一个自定义控件。它功能正常,但渲染不正确。

可以看出,设计师(netbeans)将所有东西都整齐地打包。但是,在运行的程序中有空格,按钮上的文本不会显示

这是代码

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;
  }
}
公共类AllocateSpinner扩展了javax.swing.JPanel{
/**
*创建新的表单分配器
*/
公共分配器内部(){
初始化组件();
}
/**
*从构造函数中调用此方法来初始化表单。警告:不要修改此代码。此方法的内容始终为
*由表单编辑器重新生成。
*/
@抑制警告(“未选中”)
//                           
私有组件(){
Min=newjava.awt.Button();
Decrement=newjava.awt.Button();
numberdit=newjavax.swing.JTextField();
Increment=newjava.awt.Button();
Max=newjava.awt.Button();
setMinimumSize(新java.awt.Dimension(100,23));
setPreferredSize(新java.awt.Dimension(100,23));
setLayout(新的javax.swing.BoxLayout(这个javax.swing.BoxLayout.X_轴));
Min.setFont(新的java.awt.Font(“Dialog”,0,10));//NOI18N
最小设置标签(“| |”);
Max.setMaximumSize(新java.awt.Dimension(1532767));
Max.setMinimumSize(新java.awt.Dimension(15,23));
Max.setPreferredSize(新java.awt.Dimension(15,23));
Max.addActionListener(新java.awt.event.ActionListener(){
public void actionPerformed(java.awt.event.ActionEvent evt){
执行的最大值(evt);
}
});
添加(最大值);
}//                         
私有void MinActionPerformed(java.awt.event.ActionEvent evt){
设置值(_MinValue);
}                                   
私有无效递减执行(java.awt.event.ActionEvent evt){
设置值(_值-_值步骤);
}                                         
私有void IncrementActionPerformed(java.awt.event.ActionEvent evt){
设置值(_值+_值步长);
}                                         
私有void MaxActionPerformed(java.awt.event.ActionEvent evt){
设置值(_MaxValue);
}                                   
私有void NumberEditActionPerformed(java.awt.event.ActionEvent evt){
试一试{
setValue(Integer.parseInt(numberdit.getText());
}捕获(数字格式){
numberdit.setText(_Formatter.format(_Value));
}
}                                          
//变量声明-不修改
私有java.awt.Button减量;
私有java.awt.Button增量;
private java.awt.Button Max;
私有java.awt.Button Min;
私有javax.swing.JTextField numberdit;
//变量结束声明
私有int_值=0;
私有int_MinValue=0;
私有int_MaxValue=100;
私有int _ValueStep=1;
私有NumberFormat_Formatter=NumberFormat.getIntegerInstance();
/**
*设置值。如果该值小于MinValue或大于MaxValue,则将该值设置为限制。
*@param value要设置的值。
*/
公共无效设置值(int值){
如果(_值!=值){
int ov=_值;
value=Math.max(_MinValue,value);
value=Math.min(_MaxValue,value);
_价值=价值;
numberdit.setText(_Formatter.format(_Value));
火属性变化(“值”,ov,_值);
}
}
/**
*获取当前值。
*@返回当前值。
*/
public int getValue(){
返回_值;
}
/**
*设置最小值。如果当前值小于新的最小值,则当前值设置为最小值。
*@param value要设置的新最小值。
*/
公共void setMinValue(int值){
如果(_MinValue!=值){
int ov=_MinValue;
value=Math.min(_MaxValue,value);
_最小值=最小值;
火属性变化(“MinValue”,ov,_MinValue);
如果(_值<_最小值){
设置值(_MinValue);
}
}
}
/**
*获取可以设置的最小值。
*@返回最小值。
*/
public int getMinValue(){
返回最小值;
}
/**
*设置最大值。如果当前值大于新的最大值,则将当前值设置为最大值。
*@param value新的最大值。
*/
公共void setMaxValue(int值){
如果(_MaxValue!=值){
int ov=_最大值;
value=Math.max(_MinValue,value);
_最大值=最大值;
firePropertyChange(“MaxValue”,ov,_MaxValue);
如果(\u值>\u最大值){
设置值(_MaxValue);
}
}
}
/**
*获取可以设置的最大值。
*@返回最大值。
*/
public int getMaxValue(){
返回_MaxValue;
}
/**
*设置在递增或递减操作中更改数字的量。
*@param值为步进量。
*/
public void setValueStep(int值){
如果(_ValueStep!=值){
int ov=_ValueStep;
_ValueStep=值;
火属性更改(“ValueStep”,ov,_ValueStep);
}
}
/**
*获取值在递增或递减操作中更改的量。
*@返回步数。
*/
public int getValueStep(){
返回值步骤;
}
/**
*设置要使用的数字格式化程序。
*@param formatter要使用的格式化程序。
*/
公共无效设置格式化程序(NumberFormat格式化程序){
if(_格式化程序!=格式化程序){
NumberFormat of=\u格式化程序;
_格式化程序=格式化程序;
numberdit.setText(_Formatter.format(_Value));
此.firePropertyChange(“格式化程序”,of,_Formatter);
}
}
/**
*获取当前正在使用的格式化程序。
*@返回数字格式货币