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

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

package click;
import static click.Ramka.*;
import javax.swing.JFrame;

public class Click
{


public static void main(String[] args) 
{
r1.setVisible(true);
r1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

}

0

A gdzie masz: r1=new ... ?

0
  1. static?
  2. Nie przypisujesz nic do swojego JFrame a chcesz na nim operować.
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

0

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

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);
}
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.

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