Problem y dodaniem labela

Odpowiedz Nowy wątek
2010-02-07 23:35

Rejestracja: 10 lat temu

Ostatnio: 8 lat temu

0

Witam mam następujący kod:

import java.awt.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.GregorianCalendar;

import javax.swing.*;

public class panelTest{

     class TestPanela extends JFrame implements KeyListener{

         private long start;
         private long koniec;
         private long czas;
         private long all;
         private JLabel lab;
         int keyCode = -1;

         public TestPanela(){
                this.setFocusable(true);
                this.addKeyListener(this);
                //Container
                Container powZawartosci=getContentPane();
                powZawartosci.setLayout(new FlowLayout());
                powZawartosci.setBackground(Color.lightGray);
                //Tworzenie paneli
                JPanel panel1 = new JPanel();
                JPanel panel2 = new JPanel();
                JTextField poleTekstowe = new JTextField("", 15);
                panel1.add(poleTekstowe);
                panel2.add(lab);
                powZawartosci.add(panel1);
                powZawartosci.add(panel2);
                powZawartosci.setSize(400,120);
                setVisible(true);
                }

        @Override
        public void keyPressed(KeyEvent arg0) {
             if (arg0.getKeyCode() != keyCode) {
                 start = new GregorianCalendar().getTimeInMillis();                
                 keyCode = arg0.getKeyCode();
         }
        }

        @Override
        public void keyReleased(KeyEvent arg0) {
            if (arg0.getKeyCode() == keyCode) {
                koniec = new GregorianCalendar().getTimeInMillis();
                czas = koniec - start;
                all = all + czas;
                lab.setText("Key '" + arg0.getKeyChar() + "' pressed for " +
                            Double.toString((czas) * 0.001) + " seconds. Calkowity czas to: " + 
                            Double.toString((all) * 0.001));
                    keyCode = -1;
            }

        }

        @Override
        public void keyTyped(KeyEvent arg0) {
            // TODO Auto-generated method stub

        }
            }

    public static void main(String[] atgs) { 
        panelTest pT = new panelTest();
        TestPanela test = pT.new TestPanela();
        test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        }
}

Podczas próby kompilacji mam błąd:
Exception in thread "main" java.lang.NullPointerException
at java.awt.Container.addImpl(Unknown Source)
at java.awt.Container.add(Unknown Source)
at panelTest$TestPanela.<init>(panelTest.java:31)
at panelTest.main(panelTest.java:70)

Prawdopodobnie dotyczy on linii: panel2.add(lab);
Nie bardzo rozumiem o co chodzi. Jak dla mnie wszystko wygląda w porządku, jednak dopiero zaczynam zabawę z UI. Czy ktoś mógłby mi pomóc?

Pozostało 580 znaków

2010-02-07 23:43

Rejestracja: 14 lat temu

Ostatnio: 6 lat temu

0

w tym miejscu

panel2.add(lab);

dodajesz nie za inicjalizowaną zmienną 'lab'
najpierw przed tą linijką wstaw

lab = new JLabel("tekst")

pecet

Pozostało 580 znaków

2010-02-07 23:48

Rejestracja: 10 lat temu

Ostatnio: 8 lat temu

0

Właśnie kapnąłem się że tego mi brakowało. dzięki

Pozostało 580 znaków

Odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0