2015-12-16 88 views
0

大家好,祝你有個美好的一天。忽略主要方法的新實例

我很難用這個基於swing的GUI程序,它相當不完整。但是,它至少應該編譯和運行。不幸的是,它不,我懷疑這是因爲主要的方法調用被忽略。該錯誤似乎發生在JSliders面板正在構建的部分,但它並沒有比這更具體。發生什麼事? >

package charactercreationquest; 


import javax.swing.*; 
import javax.swing.event.*; 
import java.awt.*; 
import java.awt.event.*; 
import java.util.*; 
import javax.swing.border.TitledBorder; 

public class CharacterCreationQuest extends JFrame { 

    //contains: image, race, raceLabel, job, jobLabel, genderLabel male, and female. 
    private final JPanel picPanel; 
    //contains: str, intel, dex, wis, ptsSpent, and ptsRemain. 
    private final JPanel sliderPanel;   
    //contains: name, and nameLabel 
    private final JPanel namePanel; 
    //contains: save and load 
    private final JPanel savePanel; 

    private JSlider str; 
    private JSlider intel; 
    private JSlider dex; 
    private JSlider wis; 

    private JTextField name; 

    private JComboBox race; 
    private JComboBox job; 

    private JRadioButton male; 
    private JRadioButton female; 

    private JButton save; 
    private JButton load; 

    private JLabel image; 

    private JLabel genderLabel; 
    private JLabel nameLabel; 
    private JLabel jobLabel;//Label for lifestyles 
    private JLabel raceLabel; 

    private JLabel strLabel; 
    private JLabel intelLabel; 
    private JLabel dexLabel; 
    private JLabel wisLabel; 
    private JLabel ptsRemain; 
    private JLabel ptsSpent; 

    //what the heck is OCA look it up dumbo 
    public CharacterCreationQuest() 
    { 
     picPanel = new JPanel(); 
     sliderPanel = new JPanel(); 
     namePanel = new JPanel(); 
     savePanel = new JPanel(); 
     setTitle("Character Creation Quest"); 

     setSize(500,500); 

     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 


     setLayout(new GridLayout(2,2)); 

     buildPic(); 
     buildSlider(); 
     buildName(); 
     buildSave(); 

     add(picPanel); 
     add(namePanel); 
     add(savePanel); 
     add(sliderPanel); 

     pack(); 
     setVisible(true); 

    }//end c'tor 

    public final void buildPic() 
    { 
     //contains image, race, raceLabel, job, jobLabel, genderLabel male, female 
     String[] raceList = new String[]{"a","b","c"}; 
     String[] jobList = new String[]{"a","b","c"}; 

     image = new JLabel(); 
     race = new JComboBox(); 
     job = new JComboBox(); 
     male = new JRadioButton("Male"); 
     female = new JRadioButton("Female"); 


     picPanel.add(image); 
     picPanel.add(race); 
     picPanel.add(job); 
     picPanel.add(male); 
     picPanel.add(female); 

    }//end buildPic 

    public final void buildSlider() 
    { 
     //contains: str, intel, dex, wis, and ptsRemain. 

     int numSpent = (str.getValue() + intel.getValue() 
         + dex.getValue() + wis.getValue()); 
     int numRemain = (100 - numSpent); 
     String remain; 
     String spent; 

     remain = ("Points Remaining: " + numRemain); 
     spent = ("Points Spent: " + numSpent); 

     str = new JSlider(); 
     intel = new JSlider(); 
     dex = new JSlider(); 
     wis = new JSlider(); 
     ptsRemain = new JLabel(remain); 
     ptsSpent = new JLabel(spent); 
     strLabel = new JLabel("Strength"); 
     intelLabel = new JLabel("Intelligence"); 
     dexLabel = new JLabel("Dexterity"); 
     wisLabel = new JLabel("Wisdom"); 



     sliderPanel.setLayout(new GridLayout(5,2));   

     sliderPanel.add(ptsRemain); 
     sliderPanel.add(ptsSpent); 
     sliderPanel.add(strLabel); 
     sliderPanel.add(str); 
     sliderPanel.add(intelLabel); 
     sliderPanel.add(intel); 
     sliderPanel.add(dexLabel); 
     sliderPanel.add(dex); 
     sliderPanel.add(wisLabel); 
     sliderPanel.add(wis); 




     pack(); 
    }//end buildSlider 

    public final void buildName() 
    { 
     //contains: name and namelabel 
     name = new JTextField(10); 
     nameLabel = new JLabel(); 

     namePanel.add(name); 
    }//end buildName 

    public final void buildSave() 
    { 
     //contains: save and load 

     save = new JButton("Save"); 
     load = new JButton("Load"); 

     TitledBorder title; 
     title = BorderFactory.createTitledBorder("SHIN"); 
     savePanel.setBorder(title); 

     savePanel.add(save); 
     savePanel.add(load); 

    }//end buildSave 











    //ignore this for now. get rid of the space above later plz. 
    public static void main(String[] args) { 

     new CharacterCreationQuest(); 


    } 

} 
+0

你是什麼意思:主要方法調用將被忽略?你有錯誤信息嗎?發生了什麼(錯誤)? – Stultuske

+0

你可以在這裏發佈堆棧跟蹤嗎? –

+0

您會在此行發生NullPointerException:int numSpent =(str.getValue()+ intel.getValue() \t \t + dex.getValue()+ wis.getValue()); – Stultuske

回答

1

你的問題是海峽英特爾DEX,並威斯康星尚未實例化。用下面這段代碼更改buildSlider()方法:

public final void buildSlider() 
{ 
    str = new JSlider(); 
    intel = new JSlider(); 
    dex = new JSlider(); 
    wis = new JSlider(); 

    //contains: str, intel, dex, wis, and ptsRemain. 
    int numSpent = (str.getValue()+intel.getValue()+dex.getValue()+wis.getValue()); 
    int numRemain = (100-numSpent); 
    String remain; 
    String spent; 

    remain = ("Points Remaining: "+numRemain); 
    spent = ("Points Spent: "+numSpent); 

    ptsRemain = new JLabel(remain); 
    ptsSpent = new JLabel(spent); 
    strLabel = new JLabel("Strength"); 
    intelLabel = new JLabel("Intelligence"); 
    dexLabel = new JLabel("Dexterity"); 
    wisLabel = new JLabel("Wisdom"); 

    sliderPanel.setLayout(new GridLayout(5, 2)); 

    sliderPanel.add(ptsRemain); 
    sliderPanel.add(ptsSpent); 
    sliderPanel.add(strLabel); 
    sliderPanel.add(str); 
    sliderPanel.add(intelLabel); 
    sliderPanel.add(intel); 
    sliderPanel.add(dexLabel); 
    sliderPanel.add(dex); 
    sliderPanel.add(wisLabel); 
    sliderPanel.add(wis); 

    pack(); 
} 
+0

哇,這很快,它的工作。謝了哥們。 –