2015-04-30 30 views
0

我有我創建的自定義控件。它功能正常,但渲染不正確。 Spinner Design ProblemJava自定義控件呈現與gui設計器不同

可以看出,設計師(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; 
    } 
} 
+2

你的按鈕是awt按鈕,不能擺動JButtons – ControlAltDel

+0

GRRRR ...是的,這些接縫有所作爲! –

+1

變量名稱不應以大寫字符開頭。遵循Java約定。不要使用setMinimumSize()和setPreferredSize()。讓佈局管理器確定大小。 – camickr

回答

0

的評論「你的按鈕是AWT按鈕,而不是搖擺Jbutton將」,並從按鈕後續調整的JButton似乎導致了這個問題的決議。