gpt4 book ai didi

java - 主方法的新实例被忽略

转载 作者:行者123 更新时间:2023-12-01 10:43:57 25 4
gpt4 key购买 nike

大家好,祝大家有美好的一天。

我在使用这个基于 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();


}

}

最佳答案

您的问题是strinteldexwis尚未实例化。使用下面的代码更改您的 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();
}

关于java - 主方法的新实例被忽略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34306919/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com