• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Java - JTabbedPane

Object Storage Arubacloud
+2 głosów
113 wizyt
pytanie zadane 10 lutego 2022 w Java przez JavaRobak Nowicjusz (170 p.)

Witam, zaczynam zabawę z Java GUI i napotkałam problem z JTabbedPane. Napisałam prosty przykład aby zobaczyć jak to działa i właśnie nie działa :// Jak by ktoś mógł mi pomóc i powiedzieć gdzie jest ten prosty błąd, którego nie widzę to była bym bardzo wdzięczna :))

import javax.swing.*;

public class MyFrame extends JFrame {
    public MyFrame(){
        JPanel pane = new JPanel();
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setTitle("Zakladki");
        this.setSize(700, 500);
        this.setLayout(null);

        JPanel test1 = new JPanel();
        JPanel test2 = new JPanel();
        JPanel test3 = new JPanel();
        JPanel test4 = new JPanel();

        JTabbedPane tabs = new JTabbedPane();
        tabs.addTab("Tytul 1", test1);
        tabs.addTab("Tytul 2", test2);
        tabs.addTab("Tytul 3", test3);
        tabs.addTab("Tytul 4", test4);

        pane.add(tabs);
        this.setVisible(true);
    }
}

W Main:

MyFrame frame = new MyFrame();

Po uruchomieniu pokazuje 

Z góry dziękuje za wszelką pomoc.

1 odpowiedź

+1 głos
odpowiedź 10 lutego 2022 przez Wiciorny Ekspert (270,230 p.)
wybrane 10 lutego 2022 przez JavaRobak
 
Najlepsza

Generalnie jest tu sporo błędów, przede wszystkim poprawiłem to co nie co i sprawdź sobie ten kod 
 

import javax.swing.*;
class Main {
  public static void main(String[] args) {
    JFrame frame = new JFrame("Zakładki");
        JPanel pane = new JPanel();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(700, 500);
        frame.setLocation(5, 5); // tym sie pobaw tez bo dodalem tak dla przykladu
        JPanel test1 = new JPanel();
        JPanel test2 = new JPanel();
        JPanel test3 = new JPanel();
        JPanel test4 = new JPanel();
 
        JTabbedPane tabs = new JTabbedPane();
        tabs.addTab("Tytul 1", test1);
        tabs.addTab("Tytul 2", test2);
        tabs.addTab("Tytul 3", test3);
        tabs.addTab("Tytul 4", test4);
 
        pane.add(tabs);
        frame.setVisible(true);
        frame.add(pane);
        frame.show();
    }
}

przede wszystkim metoda

frame.show()

która ma Ci pokazać ekran, dodatkowo panel powinnaś dodac do frame... bo samo utworzenie frame nie jest do końca odpowiednie. 

Nastepna linia nie ma sensu 
 

this.setLayout(null);

nie musisz nullowac Layout, jesli nic nie zawiera- a tak jest to jest taki defaultowo. 
Dodatkowo poczytaj co robi setVisable - bo korzystassz a nie rozumiesz : 

Metoda setVisible(true) powoduje pojawienie się ramki na ekranie . Jeśli zapomnisz tego zrobić, obiekt ramki będzie istniał jako obiekt w pamięci, ale na ekranie nie pojawi się żaden obraz.
 

2
komentarz 10 lutego 2022 przez JavaRobak Nowicjusz (170 p.)
Już widzę błąd, dziękuje za pomoc
komentarz 10 lutego 2022 przez Wiciorny Ekspert (270,230 p.)
też błędem jest traktowanie frame jako obiekt, program wykonywalny main powinien być framem, gdyż tylko jeden frame będzie potrzebny w aplikacji- generalnie jesli mowa o pojawianiu sie innych okienek to one powinny byc jako nody z głównego frama na zasadzie wykluczania generowane, albo zamykamy poprzedni na czas nowego albo przykrywamy, z tym ze w przykrywaniu jest problem ... z tym ze pamiec i procesor oraz watek jest aktywny
1
komentarz 11 lutego 2022 przez Oscar Nałogowiec (29,320 p.)

O ile pamiętam, to do JFrame obiekty nie dadaje się bezpośrednio, a do obiektu otrzymanego wywołaniem getContentPane().
 

frame.getContentPane().add(pane);

 

Podobne pytania

0 głosów
1 odpowiedź 262 wizyt
pytanie zadane 9 września 2022 w Java przez Hubert731 Obywatel (1,650 p.)
+1 głos
1 odpowiedź 589 wizyt
pytanie zadane 26 kwietnia 2022 w Java przez cfaniaczek Nowicjusz (200 p.)
0 głosów
1 odpowiedź 291 wizyt
pytanie zadane 3 marca 2022 w Java przez coriver Nowicjusz (170 p.)

92,581 zapytań

141,433 odpowiedzi

319,666 komentarzy

61,966 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...