창에서 상자 색상을 변경할 수있는 간단한 색상 조작 프로그램을 만들려고합니다. 나는 그 값들을 포함하도록 특별히 설정 한 클래스로 파일로부터 그들을 읽음으로써 미리 설정된 색들을 사용하고 있습니다. 모든 사전 설정 값을 포함하도록 배열을 사용하고 배열의 개별 요소에 액세스하려고하면 nullpointer 예외가 계속 발생합니다. 이것은 자바를 처음 사용하려고 시도한 것이므로 내가 실수를 저질렀다고 생각합니다. 내가 첫 번째 요소의 이름에 액세스하려고 할 때이 문제가 발생 해결하는 것입니다 방법, 그래서java의 다른 클래스에있는 정수에 액세스 할 때 null 포인터가 생깁니다.
public class colors
{
public int r, g, b;
public String name;
public colors()
{
r = 0;
g = 0;
b = 0;
name = "bob";
}
}
:
package color.sampler;
import java.io.*;
import javax.swing.*;
import javax.swing.event.*;
public class ColorSampler extends JFrame
{
protected ColorFrame sampler;
public JList colorList;
protected colors [] listOfColors;
/**
* @param args the command line arguments
*/
public static void main(String[] args) throws IOException
{
new ColorSampler("ColorSampler");
}
public ColorSampler(String title) throws IOException
{
super(title);
setBounds(100,100,300,300);
addWindowListener(new WindowDestroyer());
sampler = new ColorFrame();
getContentPane().setLayout(null);
getContentPane().add(sampler);
sampler.setBounds(10,10,270,200);
FileInputStream stream = new FileInputStream("C:\\java input\\input.txt");
InputStreamReader reader;
reader = new InputStreamReader(stream);
StreamTokenizer tokens = new StreamTokenizer(reader);
int numColors, counter;
numColors = 11;
counter = 0;
listOfColors = new colors[numColors];
while(tokens.nextToken() != tokens.TT_EOF)
{
listOfColors[counter].name = (String)tokens.sval;
tokens.nextToken();
listOfColors[counter].r = (int)tokens.nval;
System.out.println(listOfColors[counter].r);
tokens.nextToken();
listOfColors[counter].g = (int)tokens.nval;
tokens.nextToken();
listOfColors[counter].b = (int)tokens.nval;
counter++;
}
stream.close();
colorList = new JList();
colorList.addListSelectionListener(new ListHandler());
String colorString[];
colorString = new String[numColors];
for(counter = 0; counter < numColors; counter++)
{
colorString[counter] = listOfColors[counter].name;
}
colorList.setListData(colorString);
getContentPane().add(colorList);
setVisible(true);
// TODO code application logic here
}
private class ListHandler implements ListSelectionListener
{
@Override
public void valueChanged(ListSelectionEvent e)
{
if(e.getSource() == colorList)
{
if(!e.getValueIsAdjusting())
{
int i = colorList.getSelectedIndex();
String s = (String) colorList.getSelectedValue();
System.out.println("Position " + i + " selected: " + s);
}
}
}
}
}
내가 값을 저장하는 데 사용하고 클래스 : 여기 내 코드입니다 배열에?
... 당신은 또한 listOfColors 배열의 각 개체를 초기화로 while 루프를 변경해야 할 것 같아요? –
plz 오류 로그를 게시 할 수 있습니다 콘솔 밖으로 넣어 –
어떤 진술에서 예외가 발생합니다. 위의 의견을 적어주세요. –