Dlaczego przy odwołaniu się do ramki wyskakuje NullPointerException?

Odpowiedz Nowy wątek
2015-01-01 11:52
0

Prosze o odpowiedz dlaczego przy odwołaniu do mojej ramki wyskakuje NullPointerExeption.
I jescze jedno czy to jest dobry tok myslenia ?
Tworze klase ramki gdzie bede przechowywal ramke1, ramke2 itd. pozniej w main bede je wywolywal. Nastepnie stworze klase przyciski w ktorej bede przechowywal p1,p2 itd i kolejne klasy z roznymi komponentami. Czy bede mogl dodawac te komponenty w klasie Ramki a pozniej wyswietlac je w klasie main.

1.Stworzyłem klase Ramka:

 
package click;
import java.awt.Color;
import javax.swing.JFrame;
 
public class Ramka 
{
public static JFrame r1;  
 
private Ramka()
{
r1.setSize(200, 200);
r1.setTitle("Ramka");
r1.setBackground(Color.yellow);
}

  1. Nastepnie w klasie main chce sie odwolac do r1 i wyskakuje błąd
    </code></pre></li>
    </ol>
    <p>package click;<br />
    import static click.Ramka.*;<br />
    import javax.swing.JFrame;</p>
    <p>public class Click<br />
    {</p>
    <p>public static void main(String[] args)<br />
    {<br />
    r1.setVisible(true);<br />
    r1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);</p>
    <p>}</p>
    <pre><code>
     
    }
edytowany 1x, ostatnio: bogdans, 2015-01-01 12:18
Wstawiaj kod w znaczniki &lt;code=java&gt;&lt;/code&gt; - bogdans 2015-01-01 12:17

Pozostało 580 znaków

2015-01-01 12:03
0

A gdzie masz: r1=new ... ?


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.

Pozostało 580 znaków

2015-01-01 12:04
0
  1. static?
  2. Nie przypisujesz nic do swojego JFrame a chcesz na nim operować.

Pozostało 580 znaków

2015-01-01 12:29
garai_nz
0

Ewidentnie widać brak jakichkolwiek podstaw, więc na razie sugeruję przeczytać jakąkolwiek książkę o Javie lub tutorial a Swinga odłóż na później

Pozostało 580 znaków

2015-01-01 12:41
0

Wszystko rozumiem ale czy możecie przerobic moj kod tak zeby wg Was było ok chciałbym zobaczyc te ewidentne błedy.

Pozostało 580 znaków

2015-01-01 12:50
0

Zmieniłem na cos takiego.Uruchamia sie czy to jest lepszy tok myslenia?

package click;
import static click.Panel.*;
import javax.swing.JFrame;
 
public class Click
{
public static void main(String[] args) 
{
Panel p = new Panel();    
p.Ramka1();
}
}

package click;
 
import java.awt.Color;
import javax.swing.JFrame;
 
public class Panel 
{
 
public void Ramka1()
{
JFrame r1  = new JFrame();    
r1.setSize(200, 200);
r1.setTitle("Ramka");
r1.setBackground(Color.yellow);
r1.setVisible(true);
r1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
edytowany 1x, ostatnio: davyd, 2015-01-01 12:59

Pozostało 580 znaków

2015-01-01 13:20
garai_nz
1

Na podstawie drugiej "wrzutki":

  1. importy w klasie Click są niepotrzebne
  2. nazwa klasy Click raczej jest nieadekwatna do funkcjonalności, którą realizuje
  3. Klasa Panel skoro ma być ramką to niech nazywa się Ramka i niech po prostu podziedziczy po klasie JFrame
  4. Ramka w klasie Panel jest zmienną lokalną, więc z niej nie skorzystasz
  5. nazwa metody Ramka1 nic nie mówi

Podsumowując kod, który masz kompiluje się i tworzy ramkę ale nic więcej z tego nie zrobisz.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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