问题
I am making a setup wizard for a tax application and I get errors that I don't know how to solve. Please help! My Error is:
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
If anybody knows the answer, and uses StackOverflow, please ask them to awnser this question! Here is my code:
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());
}
});
}
}
Any help is appreciated! P.S: Only solve the first error!!! That fixes the others too!!!
回答1:
try leaving off the size of the array in the declaration and using curly braces instead of square braces. Such as:
Colors = new String[]{"black", "blue", "cyan", "darkGray", "gray", "green", "lightGray", "magenta", "orange", "pink", "red", "white", "yellow"};
回答2:
This line is incorrect must be wrapped with {} instead of []
new String[12]["black", "blue", "cyan", "darkGray", "gray", "green", "lightGray", "magenta", "orange", "pink", "red", "white", "yellow"];
Should be
new String[]{"black", "blue", "cyan", "darkGray", "gray", "green", "lightGray", "magenta", "orange", "pink", "red", "white", "yellow"};
And you have to add the JSrollPane to the frame instead of your JList.
JScrollPane listScroller = new JScrollPane(colors);
f.add(listScroller);
And also you have to add the JLabel to the contentPane of the JFrame
JLabel question1 = new JLabel("What would you like the background color to be?");
f.add(question1);
As @MadProgrammer always suggest i prefer adding to a container as a JPanel instead of JFrame.
回答3:
new String[12]["black", ...]
should be
new String[]{"black", ...}
or even just
{"black", ...} // no "new String[]"
You don't need to specify the size; it would be redundant as it's simply the number of elements you've declared.
回答4:
new String[12] here is of Array is 12 but there are 13 elements in your array.
also no need that
Colors = new String[12]{"black", "blue", "cyan", "darkGray", "gray", "green", "lightGray", "magenta", "orange", "pink", "red", "white", "yellow"};
Just use
Colors = new String[]{"black", "blue", "cyan", "darkGray", "gray", "green", "lightGray", "magenta", "orange", "pink", "red", "white", "yellow"};
回答5:
Arrays are not initialised using square brackets, they are initialised with curly brackets, so;
Colors = new String[]{"black", "blue", "cyan", "darkGray", "gray", "green", "lightGray", "magenta", "orange", "pink", "red", "white", "yellow"};
回答6:
Array initializers use {} instead of [] (for the literal part), and you don't declare the size of the array, as:
Colors = new String[] {"black", "blue", "cyan", "darkGray",
"gray", "green", "lightGray", "magenta",
"orange", "pink", "red", "white", "yellow"};
来源:https://stackoverflow.com/questions/17532928/bad-compile-errors-for-a-setup-wizard-cannot-find-symbol