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());

    }

soruldu: 10 Oca '15, 11:30

D%C4%B0GREV07's gravatar image

DİGREV07
161101012
cevap kabul oranı: 0%


Main class constructurundaki labelleri create ederken local variable olarak create etmişsin. Erişmeye çalışırken ise Class member olan labela erişmeye çalışmışsın. Create ettiğin label havada kaldığı ve member olan label create edilmediği için nullpointer hatası veriyor.

Sözün özü

JLabel label=new JLabel("Cpu Speed");  
JLabel label2=new JLabel("ProcessorName");  
JLabel label3=new JLabel("");  
JLabel label4=new JLabel("");

yerine

label=new JLabel("Cpu Speed");  
label2=new JLabel("ProcessorName");  
label3=new JLabel("");  
label4=new JLabel("");

yazman gerekiyor.

permanent link

cevaplandı: 12 Oca '15, 03:16

Fatih's gravatar image

Fatih
51761021
cevap kabul oranı: 40%

değiştirildi: 12 Oca '15, 03:16

MainClass.java 140 'ıncı satırda NullPointerException hatası fırlatıyormuş. Debug ile o satırdaki değerleri kontrol edersen null olan değerin hangisi olduğunu saptayabilirsin.

İyi çalışmalar

permanent link

cevaplandı: 10 Oca '15, 11:38

M%C3%BCsl%C3%BCm%20%C3%96ZT%C3%9CRK's gravatar image

Müslüm ÖZTÜRK
10.6k103690
cevap kabul oranı: 28%

Çok teşekkürler hocam

permanent link

cevaplandı: 12 Oca '15, 08:27

D%C4%B0GREV07's gravatar image

DİGREV07
161101012
cevap kabul oranı: 0%

Cevabınız
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×1,079

Soruldu: 10 Oca '15, 11:30

Görüntüleme: 536 kez

Son güncelleme: 12 Oca '15, 08:27

powered by BitNami OSQA