Java 安装向导的错误编译错误找不到符号
我正在为税务应用程序制作一个安装向导,但遇到了一些我不知道如何解决的错误。请帮忙! 我的错误是:Java 安装向导的错误编译错误找不到符号,java,arrays,string,compiler-errors,jframe,Java,Arrays,String,Compiler Errors,Jframe,我正在为税务应用程序制作一个安装向导,但遇到了一些我不知道如何解决的错误。请帮忙! 我的错误是: Setup.java:16: error: cannot find symbol Colors = new String[]{"black", "blue", "cyan", "darkGray", "gray", "green", "lightGray", "magenta", "orange", "pink", "red", "white", "yellow"};
Setup.java:16: error: cannot find symbol
Colors = new String[]{"black", "blue", "cyan", "darkGray", "gray", "green", "lightGray", "magenta", "orange", "pink", "red", "white", "yellow"};
^
symbol: variable Colors
location: class Setup
Setup.java:17: error: cannot find symbol
final JList colors = new JList(Colors);
^
symbol: variable Colors
location: class Setup
Setup.java:24: error: cannot find symbol
Colors = new String[]{"black", "blue", "cyan", "darkGray", "gray", "green", "lightGray", "magenta", "orange", "pink", "red", "white", "yellow"};
^
symbol: variable Colors
Setup.java:25: error: cannot find symbol
如果有人知道答案,并使用StackOverflow,请让他们回答这个问题!
这是我的密码:
import java.awt.event.*;
import javax.swing.event.*;
public class Setup {
@SuppressWarnings("unchecked")
private static String colorSelected;
public static void main(String[] args) {
final JFrame f = new JFrame("Test Setup wizard");
Container a = f.getContentPane();
a.setBackground(Color.white);
a.setLayout(new FlowLayout());
JLabel question1 = new JLabel("What would you like the background color to be?");
JButton Next = new JButton("Next");
Colors = new String[]{"black", "blue", "cyan", "darkGray", "gray", "green", "lightGray", "magenta", "orange", "pink", "red", "white", "yellow"};
final JList colors = new JList(Colors);
colors.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
colors.setLayoutOrientation(JList.VERTICAL);
JScrollPane listScroller = new JScrollPane(colors);
colors.addListSelectionListener(new ListSelectionListener() {
public void valueChanged(ListSelectionEvent e) {
int index = e.getFirstIndex();
Colors = new String[]{"black", "blue", "cyan", "darkGray", "gray", "green", "lightGray", "magenta", "orange", "pink", "red", "white", "yellow"};
String colorSelected = Colors[index];
}
});
f.add(question1);
f.add(listScroller);
f.add(Next);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setSize(500,500);
f.setVisible(true);
final ImageIcon img = new ImageIcon("HardDisk.jpg");
f.setIconImage(img.getImage());
Next.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent Ev) {
final Color[] Selected = new Color[1];
if (colorSelected .equals("black")) {
Selected[0] = new Color(0,0,0);
}
else if (colorSelected .equals("blue")) {
Selected[0] = new Color(0,0,255);
}
else if (colorSelected .equals("cyan")) {
Selected[0] = new Color(0,225,225);
}
else if (colorSelected .equals("darkGray")) {
Selected[0] = new Color(169,169,169);
}
else if (colorSelected .equals("gray")) {
Selected[0] = new Color(128,128,128);
}
else if (colorSelected .equals("green")) {
Selected[0] = new Color(0,255,0);
}
else if (colorSelected .equals("lightGray")) {
Selected[0] = new Color(211,211,211);
}
else if (colorSelected .equals("magenta")) {
Selected[0] = new Color(255,0,255);
}
else if (colorSelected .equals("orange")) {
Selected[0] = new Color(255,165,0);
}
else if (colorSelected .equals("pink")) {
Selected[0] = new Color(255,20,147);
}
else if (colorSelected .equals("red")) {
Selected[0] = new Color(255,0,0);
}
else if (colorSelected .equals("white")) {
Selected[0] = new Color(255,255,255);
}
else if (colorSelected .equals("yellow")) {
Selected[0] = new Color(255,255,0);
}
f.dispose();
JLabel complete = new JLabel("You are now complete.");
JFrame f = new JFrame("Complete");
Container a = f.getContentPane();
a.setBackground(Selected[0]);
f.add(complete);
f.setSize(500,500);
f.setVisible(true);
f.setIconImage(img.getImage());
}
});
}
}
感谢您的帮助!
附言:只解决第一个错误!!!这也解决了其他问题 尝试在声明中省略数组的大小,并使用大括号而不是方括号。例如:
Colors = new String[]{"black", "blue", "cyan", "darkGray", "gray", "green", "lightGray", "magenta", "orange", "pink", "red", "white", "yellow"};
数组不是用方括号初始化的,它们是,所以
数组初始值设定项使用
{}
而不是[]
(对于文字部分),并且不声明数组的大小,如下所示:
Colors = new String[] {"black", "blue", "cyan", "darkGray",
"gray", "green", "lightGray", "magenta",
"orange", "pink", "red", "white", "yellow"};
应该是
new String[]{"black", ...}
甚至只是
{"black", ...} // no "new String[]"
您不需要指定大小;这是多余的,因为它只是您声明的元素数。这一行不正确,必须用
{}
而不是[]
new String[12]["black", "blue", "cyan", "darkGray", "gray", "green", "lightGray", "magenta", "orange", "pink", "red", "white", "yellow"];
应该是
new String[]{"black", "blue", "cyan", "darkGray", "gray", "green", "lightGray", "magenta", "orange", "pink", "red", "white", "yellow"};
您必须将JSrollPane添加到框架中,而不是添加到JList中
JScrollPane listScroller = new JScrollPane(colors);
f.add(listScroller);
您还必须将JLabel
添加到JFrame的contentPane中
JLabel question1 = new JLabel("What would you like the background color to be?");
f.add(question1);
正如@MadProgrammer经常建议的那样,我更喜欢将JPanel而不是JFrame添加到容器中
new String[12] here is of Array is 12 but there are 13 elements in your array.
也不需要
Colors = new String[12]{"black", "blue", "cyan", "darkGray", "gray", "green", "lightGray", "magenta", "orange", "pink", "red", "white", "yellow"};
只用
Colors = new String[]{"black", "blue", "cyan", "darkGray", "gray", "green", "lightGray", "magenta", "orange", "pink", "red", "white", "yellow"};
“谢谢,PrivateName”不包括SIG。在问题中,它们是噪音。这是真的,这也不是问题,12不应该在那里,13或其他:)这是这里的问题,它仍然没有编译,但编译器给我的是奇怪的。它是:'注意:Setup.java使用未经检查或不安全的操作。注意:使用-Xlint重新编译:未选中以获取详细信息。请帮忙!谢谢这意味着该类中的某些内容导致抛出编译器警告。通常,一个好的IDE将能够捕获这些内容并告诉您它们是什么。现在,您可以尝试在类声明的顶部添加@抑制器警告(“未选中”)。它确实编译,但它只是在编译时说。@ PrimeAtNeNATE不理解XD考虑接受答案。
Colors = new String[12]{"black", "blue", "cyan", "darkGray", "gray", "green", "lightGray", "magenta", "orange", "pink", "red", "white", "yellow"};
Colors = new String[]{"black", "blue", "cyan", "darkGray", "gray", "green", "lightGray", "magenta", "orange", "pink", "red", "white", "yellow"};