Akadaşlar layoutları yeni öğrenmeye başladım .Ve şöyle bir uygulamamda registrydeki işlemci adını alıp label'a yazmam lazım.İşlemci adını alabiliyorum fakat label'a yazdırmayı beceremedim.Null pointer veriyor.
Exception in thread "main" java.lang.NullPointerException
at MainClass.main(MainClass.java:140)
Halbuki contructorda bütün label'ları new ile oluşturup panellere ekledim Acaba neyi yanlış yapıorum
public class MainClass extends JFrame {
JPanel panel;
JPanel panel2;
JPanel panel3;
JPanel panel4;
JPanel panel5;
static JLabel label;
JLabel label2;
JLabel label3;
JLabel label4;
JLabel label5;
JLabel label6;
JButton button;
JButton button2;
public MainClass () {
setResizable(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JLabel label=new JLabel("Cpu Speed");
JLabel label2=new JLabel("ProcessorName");
JLabel label3=new JLabel("");
JLabel label4=new JLabel("");
button=new JButton("OK");
button2=new JButton("Exit");
panel=new JPanel(new GridLayout(2,1));
panel.add(label);
panel.add(label2);
panel2=new JPanel(new GridLayout(2,1));
panel2.add(label3);
panel2.add(label4);
panel3=new JPanel(new FlowLayout());
panel3.add(panel);
panel3.add(panel2);
panel4=new JPanel(new FlowLayout());
panel4.add(button);
panel4.add(button2);
panel5=new JPanel(new BorderLayout());
panel5.add(panel3,BorderLayout.CENTER);
panel5.add(panel4,BorderLayout.SOUTH);
getContentPane().add(panel5);
pack();
setVisible(true);
}
private static final String REG_UTIL = "reg query ";
private static final String REG_TOKEN = "REG_SZ";
private static final String REGDWORD_TOKEN = "REG_DWORD";
private static final String CPU_NAME_CMD = REG_UTIL +
"\\"HKLM\\\\HARDWARE\\\\DESCRIPTION\\\\System\\\\CentralProcessor\\\\0\\""
+ " /v ProcessorNameString";
public static String GetProcessorName() throws IOException, InterruptedException {
Process p=Runtime.getRuntime().exec(CPU_NAME_CMD);
ReadFromReg readFromReg=new ReadFromReg(p.getInputStream());
readFromReg.start();
p.waitFor();
readFromReg.join();
String string=readFromReg.getResult();
System.out.println(string);
int p1=string.indexOf(REG_TOKEN);
return string.substring(p1+REG_TOKEN.length()).trim();
}
static class ReadFromReg extends Thread{
InputStream _is;
StringWriter writer;
public ReadFromReg(InputStream stream){
_is=stream;
writer=new StringWriter();
}
public void run(){
int c;
try {
while((c=_is.read())!=-1){
writer.write(c);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
String getResult(){
return writer.toString();
}
}
public static void main(String[] args) throws IOException, InterruptedException {
setDefaultLookAndFeelDecorated(true);
new MainClass().setVisible(true);
System.out.println(MainClass.GetProcessorName());
label.setText(MainClass.GetProcessorName());
}