Java SWING a błąd "AWT-EventQueue-0" java.lang.NullPointerException

Odpowiedz Nowy wątek
2017-09-09 20:44
0

Witam Wszystkich!
Próbuję kilku rzeczy, jak je używać itd. i nastąpiłem na błąd który nie mogę w żaden sposób uniknąć. Nie wiem do końca w czym jest błąd, co może być zle napisane. Nie zwróciłem uwagi na nazwy zmiennych i tym podobne, ponieważ chodzi o same "testy". Sprawa ma (powinna wyglądać) tak, że po wyjściu z panelu panelu login znika on a pojawia się inny, próbowałem na różne sposoby ale zawsze mam taki błąd:


Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at Okno.UIWindow.wyjdzZLoginDalej(UIWindow.java:401)
    at Okno.UIWindow$3.actionPerformed(UIWindow.java:152)
    at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
    at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
    at java.awt.Component.processMouseEvent(Unknown Source)
    at javax.swing.JComponent.processMouseEvent(Unknown Source)
    at java.awt.Component.processEvent(Unknown Source)
    at java.awt.Container.processEvent(Unknown Source)
    at java.awt.Component.dispatchEventImpl(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Window.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    at java.awt.EventQueue.access$500(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue$4.run(Unknown Source)
    at java.awt.EventQueue$4.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)

a tutaj kod


package Okno;

import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.FlowLayout;
import javax.swing.JLabel;
import javax.swing.JTextField;
import net.miginfocom.swing.MigLayout;
import com.jgoodies.forms.layout.FormLayout;
import com.jgoodies.forms.layout.ColumnSpec;
import com.jgoodies.forms.layout.FormSpecs;
import com.jgoodies.forms.layout.RowSpec;
import com.sun.xml.internal.ws.policy.privateutil.PolicyUtils.Text;

import Logika.Logika1;
import javafx.scene.control.Slider;

import javax.swing.GroupLayout;
import javax.swing.GroupLayout.Alignment;
import javax.swing.ImageIcon;
import javax.swing.LayoutStyle.ComponentPlacement;
import java.awt.Font;
import java.awt.Image;

import javax.swing.JProgressBar;
import javax.swing.JList;
import javax.swing.JSlider;
import javax.swing.JButton;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;

import java.awt.Color;
import javax.swing.border.BevelBorder;
import java.awt.Cursor;
import java.awt.Rectangle;
import javax.swing.SwingConstants;
import javax.swing.UIManager;
import javax.swing.JPasswordField;
import java.awt.Label;
import javax.swing.border.LineBorder;
import javax.swing.border.SoftBevelBorder;
import javax.swing.JPopupMenu;
import java.awt.Component;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.Scanner;
import java.awt.Dimension;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class UIWindow {

    private JFrame frame;
    private JTextField fieldPodajBrutto;
    private JTextField fieldZUS;
    private JTextField fieldSKARBOWKA;
    private JTextField fieldNETTO;
    private JPasswordField passwordField;
    private JTextField textLoginSpace;
    private JSlider slider;
    private JLabel lblOdpSlider;
    private JLabel lblFailLogin;
    private JPanel panelLogin;
    private JPanel panelBruttoNettoPodatki;

    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    UIWindow window = new UIWindow();
                    window.frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the application.
     */
    public UIWindow() {
        initialize();
    }

    /**
     * Initialize the contents of the frame.
     */

    private void initialize() {
        frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
        frame.setBounds(100, 100, 450, 316);
        frame.getContentPane().setLayout(new CardLayout(0, 0));
        frame.setExtendedState(JFrame.MAXIMIZED_HORIZ);
        frame.setVisible(true);
        frame.setResizable(false);

        JPanel panelLogin = new JPanel();
        panelLogin.setVisible(true);
        panelLogin.setBackground(new Color(255, 255, 255));
        frame.getContentPane().add(panelLogin, "name_196173800546301");
        panelLogin.setLayout(null);

        passwordField = new JPasswordField();
        passwordField.setBounds(265, 212, 99, 27);
        panelLogin.add(passwordField);

        textLoginSpace = new JTextField();
        textLoginSpace.setBounds(92, 212, 99, 27);
        panelLogin.add(textLoginSpace);
        textLoginSpace.setColumns(10);

        JLabel lblZalogujSi = new JLabel("ZALOGUJ");
        lblZalogujSi.setFont(new Font("Papyrus", Font.PLAIN, 16));
        lblZalogujSi.setForeground(Color.WHITE);
        lblZalogujSi.setBounds(183, 149, 105, 37);
        panelLogin.add(lblZalogujSi);

        JLabel lblFailLogin = new JLabel("");
        lblFailLogin.setFont(new Font("Papyrus", Font.BOLD | Font.ITALIC, 18));
        lblFailLogin.setForeground(new Color(153, 0, 0));
        lblFailLogin.setBounds(95, 28, 282, 107);
        panelLogin.add(lblFailLogin);

        JButton btnRedLog = new JButton("");
        btnRedLog.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                System.exit(0);
            }
        });
        btnRedLog.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
        btnRedLog.setBorder(new SoftBevelBorder(BevelBorder.RAISED, Color.DARK_GRAY, Color.DARK_GRAY, Color.LIGHT_GRAY,
                Color.LIGHT_GRAY));
        btnRedLog.setIcon(new ImageIcon(
                ));
        btnRedLog.setBounds(364, 185, 40, 81);
        panelLogin.add(btnRedLog);

        JButton btnBluLog = new JButton("");
        btnBluLog.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                wyjdzZLoginDalej();

            }
        });
        btnBluLog.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
        btnBluLog.setAlignmentX(0.5f);
        btnBluLog.setAlignmentY(0.0f);
        btnBluLog.setBorder(new SoftBevelBorder(BevelBorder.LOWERED, new Color(64, 64, 64), new Color(64, 64, 64),
                Color.DARK_GRAY, new Color(192, 192, 192)));
        btnBluLog.setIcon(new ImageIcon(
                ));
        btnBluLog.setBounds(404, 185, 40, 81);
        panelLogin.add(btnBluLog);

        JLabel lblBackground = new JLabel("");
        lblBackground.setIcon(new ImageIcon(
                lblBackground.setBounds(0, 0, 444, 266);
        panelLogin.add(lblBackground);

        JPanel panelBruttoNettoPodatki = new JPanel();
        panelBruttoNettoPodatki.setVisible(false);
        panelBruttoNettoPodatki.setBorder(new BevelBorder(BevelBorder.LOWERED, null, null, null, null));
        frame.getContentPane().add(panelBruttoNettoPodatki, "name_411413147098636");

        JLabel lblNewLabel = new JLabel("Podaj kwote brutto");
        lblNewLabel.setFont(new Font("Papyrus", Font.PLAIN, 15));
        lblNewLabel.setBounds(29, 23, 132, 23);

        fieldPodajBrutto = new JTextField();
        fieldPodajBrutto.setBounds(29, 50, 132, 39);
        fieldPodajBrutto.setColumns(10);
        panelBruttoNettoPodatki.setLayout(null);
        panelBruttoNettoPodatki.add(lblNewLabel);
        panelBruttoNettoPodatki.add(fieldPodajBrutto);

        JLabel lblZus = new JLabel("ZUS");
        lblZus.setFont(new Font("Papyrus", Font.PLAIN, 15));
        lblZus.setBounds(212, 66, 61, 23);
        panelBruttoNettoPodatki.add(lblZus);

        JLabel lblSkarbowka = new JLabel("SKARBOWKA");
        lblSkarbowka.setFont(new Font("Papyrus", Font.PLAIN, 15));
        lblSkarbowka.setBounds(184, 129, 132, 23);
        panelBruttoNettoPodatki.add(lblSkarbowka);

        JLabel lblNetto = new JLabel("NETTO");
        lblNetto.setFont(new Font("Papyrus", Font.PLAIN, 15));
        lblNetto.setBounds(206, 190, 85, 23);
        panelBruttoNettoPodatki.add(lblNetto);

        fieldZUS = new JTextField();
        fieldZUS.setBounds(326, 61, 98, 33);
        panelBruttoNettoPodatki.add(fieldZUS);
        fieldZUS.setColumns(10);

        fieldSKARBOWKA = new JTextField();
        fieldSKARBOWKA.setColumns(10);
        fieldSKARBOWKA.setBounds(326, 124, 98, 33);
        panelBruttoNettoPodatki.add(fieldSKARBOWKA);

        fieldNETTO = new JTextField();
        fieldNETTO.setColumns(10);
        fieldNETTO.setBounds(326, 185, 98, 33);
        panelBruttoNettoPodatki.add(fieldNETTO);

        JSlider slider = new JSlider();
        slider.setPaintTrack(false);
        slider.setForeground(new Color(255, 255, 255));
        slider.setMajorTickSpacing(1);
        slider.setPaintTicks(true);
        slider.setMinimum(-2);
        slider.setValue(0);
        slider.setBackground(new Color(30, 144, 255));
        slider.setName("");
        slider.setFont(new Font("Papyrus", Font.PLAIN, 13));
        slider.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
        slider.setToolTipText("");
        slider.setMaximum(2);
        slider.setBounds(0, 174, 202, 44);
        panelBruttoNettoPodatki.add(slider);

        JLabel lblCoDalej = new JLabel("Co dalej?");
        lblCoDalej.setFont(new Font("Papyrus", Font.PLAIN, 15));
        lblCoDalej.setBounds(41, 146, 75, 23);
        panelBruttoNettoPodatki.add(lblCoDalej);

        JButton btnPolicz = new JButton("Policz!");
        btnPolicz.setBounds(46, 100, 89, 23);
        panelBruttoNettoPodatki.add(btnPolicz);

        JButton btnPrzejdz = new JButton("Przejdz");
        btnPrzejdz.setBackground(new Color(30, 144, 255));
        btnPrzejdz.setFont(new Font("Papyrus", Font.BOLD | Font.ITALIC, 14));
        btnPrzejdz.setForeground(new Color(30, 144, 255));
        btnPrzejdz.setBounds(0, 215, 89, 51);
        panelBruttoNettoPodatki.add(btnPrzejdz);

        JLabel lblOdpSlider = new JLabel("");
        lblOdpSlider.setOpaque(true);
        lblOdpSlider.setHorizontalTextPosition(SwingConstants.CENTER);
        lblOdpSlider.setAlignmentY(0.0f);
        lblOdpSlider.setHorizontalAlignment(SwingConstants.CENTER);
        lblOdpSlider.setBounds(new Rectangle(100, 100, 0, 0));
        lblOdpSlider.setBorder(null);
        lblOdpSlider.setForeground(new Color(255, 255, 255));
        lblOdpSlider.setBackground(new Color(30, 144, 255));
        lblOdpSlider.setFont(new Font("Papyrus", Font.PLAIN, 14));
        lblOdpSlider.setBounds(89, 215, 113, 51);
        panelBruttoNettoPodatki.add(lblOdpSlider);

        JPanel panelKosztyMiesieczne = new JPanel();
        panelKosztyMiesieczne.setVisible(false);
        frame.getContentPane().add(panelKosztyMiesieczne, "name_411415613218628");
        panelKosztyMiesieczne.setLayout(null);

        JSlider slider_1 = new JSlider();
        slider_1.setBounds(0, 172, 200, 44);
        slider_1.setValue(0);
        slider_1.setToolTipText("");
        slider_1.setPaintTrack(false);
        slider_1.setPaintTicks(true);
        slider_1.setName("");
        slider_1.setMinimum(-2);
        slider_1.setMaximum(2);
        slider_1.setMajorTickSpacing(1);
        slider_1.setForeground(Color.WHITE);
        slider_1.setFont(new Font("Papyrus", Font.PLAIN, 13));
        slider_1.setBackground(new Color(30, 144, 255));
        panelKosztyMiesieczne.add(slider_1);

        JButton btnPrzejdz1 = new JButton("Przejdz");
        btnPrzejdz1.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
            }
        });
        btnPrzejdz1.setForeground(new Color(30, 144, 255));
        btnPrzejdz1.setFont(new Font("Papyrus", Font.BOLD | Font.ITALIC, 14));
        btnPrzejdz1.setBackground(new Color(30, 144, 255));
        btnPrzejdz1.setBounds(0, 215, 89, 51);
        panelKosztyMiesieczne.add(btnPrzejdz1);

        JLabel lblOdpSlider1 = new JLabel("");
        lblOdpSlider1.setOpaque(true);
        lblOdpSlider1.setHorizontalTextPosition(SwingConstants.CENTER);
        lblOdpSlider1.setHorizontalAlignment(SwingConstants.CENTER);
        lblOdpSlider1.setForeground(Color.WHITE);
        lblOdpSlider1.setFont(new Font("Papyrus", Font.PLAIN, 14));
        lblOdpSlider1.setBounds(new Rectangle(100, 100, 0, 0));
        lblOdpSlider1.setBorder(null);
        lblOdpSlider1.setBackground(new Color(30, 144, 255));
        lblOdpSlider1.setAlignmentY(0.0f);
        lblOdpSlider1.setBounds(87, 215, 113, 51);
        panelKosztyMiesieczne.add(lblOdpSlider1);

        JPanel panelZapisPoleManewru = new JPanel();
        panelZapisPoleManewru.setVisible(false);
        frame.getContentPane().add(panelZapisPoleManewru, "name_411418355057203");
        panelZapisPoleManewru.setLayout(null);

        JSlider slider_2 = new JSlider();
        slider_2.setValue(0);
        slider_2.setToolTipText("");
        slider_2.setPaintTrack(false);
        slider_2.setPaintTicks(true);
        slider_2.setName("");
        slider_2.setMinimum(-2);
        slider_2.setMaximum(2);
        slider_2.setMajorTickSpacing(1);
        slider_2.setForeground(Color.WHITE);
        slider_2.setFont(new Font("Papyrus", Font.PLAIN, 13));
        slider_2.setBackground(new Color(30, 144, 255));
        slider_2.setBounds(0, 172, 200, 44);
        panelZapisPoleManewru.add(slider_2);

        JButton btnPrzejdz2 = new JButton("Przejdz");
        btnPrzejdz2.setForeground(new Color(30, 144, 255));
        btnPrzejdz2.setFont(new Font("Papyrus", Font.BOLD | Font.ITALIC, 14));
        btnPrzejdz2.setBackground(new Color(30, 144, 255));
        btnPrzejdz2.setBounds(0, 215, 89, 51);
        panelZapisPoleManewru.add(btnPrzejdz2);

        JLabel btnPrzejdz3 = new JLabel("");
        btnPrzejdz3.setOpaque(true);
        btnPrzejdz3.setHorizontalTextPosition(SwingConstants.CENTER);
        btnPrzejdz3.setHorizontalAlignment(SwingConstants.CENTER);
        btnPrzejdz3.setForeground(Color.WHITE);
        btnPrzejdz3.setFont(new Font("Papyrus", Font.PLAIN, 14));
        btnPrzejdz3.setBounds(new Rectangle(100, 100, 0, 0));
        btnPrzejdz3.setBorder(null);
        btnPrzejdz3.setBackground(new Color(30, 144, 255));
        btnPrzejdz3.setAlignmentY(0.0f);
        btnPrzejdz3.setBounds(87, 215, 113, 51);
        panelZapisPoleManewru.add(btnPrzejdz3);

        JMenuBar menuBar = new JMenuBar();
        frame.setJMenuBar(menuBar);

        JMenu mnMenu = new JMenu("Menu");
        menuBar.add(mnMenu);

        JMenu mnZapisz = new JMenu("Zapisz");
        mnMenu.add(mnZapisz);

        JMenuItem mntmTxt = new JMenuItem("jako \"TXT\"");
        mnZapisz.add(mntmTxt);

        JMenuItem mntmCsv = new JMenuItem("jako \"CSV\"");
        mnZapisz.add(mntmCsv);

        JMenuItem mntmWyloguj = new JMenuItem("wyloguj");
        mnZapisz.add(mntmWyloguj);
        mntmWyloguj.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                System.exit(0);

            }
        });

    }

    public void gdzieDalej() {
        if (slider.getValue() == 0) {
            lblOdpSlider.setText("Przesuń suwak");
        }
        try {
            String x = Logika1.Przejscie(slider.getValue());
            lblOdpSlider.setText(x);
        } catch (NumberFormatException e) {
            JOptionPane.showMessageDialog(null, e);
        }
    }

    public boolean wyjdzZLoginDalej() {
        try {
            String x = String.valueOf(passwordField.getPassword());
            String y = textLoginSpace.getText();
            if (y.equals("admin") && x.equals("admin")) {
                JOptionPane.showMessageDialog(null, "tak");
                panelLogin.setVisible(false);
                panelBruttoNettoPodatki.setVisible(true);

                return true;

            } else {
                lblFailLogin.setText("Zle dane!");
            }

        } catch (NullPointerException e1) {
            lblFailLogin.setText("" + e1);

        }
        return false;

    }
}

Ma ktoś jakiś pomysl?

Pozostało 580 znaków

2017-09-09 21:58
0

Hej, po pierwsze podziel se to na kilka klas. Jak to teraz wygląda?
Pakiet z dużej litery? RLY??
Dlaczego UIWindow nie dziedziczy po Jframe i nie zawiera wszystkich pól (JTextfield, JButton itp.)?
Dlaczego nie masz Osobnej klasy z main, w której tworzysz egzemplarz UiWindow???
Kurde, nazwa zmiennej z "_" to nie C++


Pozostało 580 znaków

2017-09-09 22:43
0

Do tworzenia pobrałem z Eclipse "WindowsBuilder który tak właśnie zapisuje, nie musi UIWindows dziedziczyć po JFrame żeby działało, mam kilka aplikacji w które tak robiłem i wszystko działa. Co do tych pól, powiem szczerze nie wiem, tak w/w buduje aplikacje, jeśli jakieś pole potrzebuje to sobie w każdej chwili mogę dopisać.
Co do pakietu z dużej litery - nie tworzę jakiejś konkretnej aplikacji, ale chce kilka rzeczy'rozwiązań spróbować m.in właśnie aplikacje "wielookienkową" i jak dopisać, trochę później podłączenie bazy danych itd., nie zwróciłem na to większej uwagi. Bądź jednak pewny, że przy aplikacji która "pójdzie gdzieś dalej" na pewno będą zachowane takie szczegóły :)
Tak samo co do nazwy zmiennej, na szybko dopisałem, zresztą co chwila zmieniam bo staram się to ogarnać, podejść to sprawy z różnym zapisem. Nie wiem co konkretnie wywołuje ten błąd (jakbym wiedział to bym już to zrobił) ale myślę ze to może właśnie kwestia pętli. Z jednej strony dopóki nie odnoszę się do prywatnego pola, czyli na przykład napisze "System.out.println("tak"); - to działa, nie wyskakuje błąd.
Wyjątek pokazuje się w momencie gdy chcę ustawić, ze jeśli login i haslo się zgadzają to i dopisuje do jakiekolwiek JPanel ".setVisibility(true)/ bądź (false).
Pojawia się nawet kiedy wpisuje prostu zapis, żeby w JtextField pojawiła się odpowiedz.
Wychodzi na to ze jest to chyba problem z uzyciem tych pól, zaraz zobaczę czy przez "private" czy cos innego.

edytowany 2x, ostatnio: BHeiB, 2017-09-09 22:44

Pozostało 580 znaków

2017-09-10 00:01
2

Zawsze mnie ciekawią takie wątki. Przecież Java to nie C++ gdzie nie wiadomo co sie wysypało. To jest java, masz cały stacktrace i konkretną LINIĘ KODU gdzie się wywaliło. Tak trudno postawić tam breakpoint i uruchomic debuger? o_O


Masz problem? Pisz na forum, nie do mnie. Nie masz problemów? Kup komputer...
Musiało widocznie być tak jak w c++ :) - Wypierdzisty 2017-09-10 00:16

Pozostało 580 znaków

2017-09-10 08:46
0

Skoro się uczysz, to ucz się prawidłowych rzeczy.
Dowiedz się najpierw coś o javie ,a potem zabieraj się do swinga, o OOP, dziedzczeniu, enkapsulacji, co to są relacje "jest" i "ma".
A potem zabieraj się za swinga wątki.
Zgadzam się z Shalomem, ze masz tam stacktrace, więc odpal debug i sprawdź czemu tam leci nullpointer.


Pozostało 580 znaków

2017-09-10 12:24
0

Black007 - kolego wiem co to jest OOP, dziedziczenie czy "enkapsulacja"/hermetyzacja. Powiem szczerze, że zrobiłem kurs podstawy Javy i takie rzeczy są mi znane, nie oznacza to, że uważam, że znam nie wiadomo ile. :)
Niestety jednak nie było wspomniane o debugowaniu - kolejny moment żeby cos nowego zobaczyć.
Nie przypuszczałem, że debugowanie może tyle powiedzieć, chociaż wiem, że jest to element podstawy tak naprawdę. Dobra, zobaczę jak z tego korzystać i jaka działa.
Dzięki za pomoc chłopaki, zaraz (mam nadzieje) zobaczę o co tu chodzi.

edytowany 1x, ostatnio: BHeiB, 2017-09-10 12:35

Pozostało 580 znaków

2017-09-10 12:57
0

Skoro wiesz, to użyj enakpsulacji.
Pomyśl, czy obiekt klasy UiWindow powinien zmieniać coś bezpośrednio w obiekcie JFrame?
Czy może powinieneś stworzyć nową klasę dziedziczącą po JFrame, i w niej dodawać pola (Jtext, jbutton itp.) i funkcjonalności (actionListenery)
A twoja główna klasa z main powinna tylko wywołać frame.setVisible(true) ?
Automatyczne generatory nie są dobre do nauki.


Pozostało 580 znaków

2017-09-10 13:30
0
Black007 napisał(a):

Skoro wiesz, to użyj enakpsulacji.
Pomyśl, czy obiekt klasy UiWindow powinien zmieniać coś bezpośrednio w obiekcie JFrame?
Czy może powinieneś stworzyć nową klasę dziedziczącą po JFrame, i w niej dodawać pola (Jtext, jbutton itp.) i funkcjonalności (actionListenery)
A twoja główna klasa z main powinna tylko wywołać frame.setVisible(true) ?
Automatyczne generatory nie są dobre do nauki.

Mam inna aplikacje wykonaną za pomocą WindowBuilder (prosty kalkulator) i taki problem nie występuje. Tak również Main wywołuje "setVisible" a actionListenery mam przypisane np. do butonów, nie ma w nim getterów i seterów i działa, nie rozumiem do końca dlaczego tutaj jest inaczej.
Uzyłem debugera, ustawiłem dużą ilość breakpointów i zauważyłem, że w ogóle komponenty (chyba) nie są dostępne. Wyrzuca mi "not available". Tu chyba faktycznie może być kwestia dziedziczenia, zaraz się w to bardziej zagłębie. Nie ukrywam, że deburem ciekawe rzeczy pokazuje ale dalej nie mam pojęcia co to powoduje :)

Co do powiedzmy "stylu pisania" (osobne klasy z Jbutton itd.) to myślałem ze skoro WindowBuilder tak nie robi to nie jest potrzebne, szczególnie, że tak jak mówie widziałęm kilka aplikacji wykonanych za pomocą w/w i działają.

Pozostało 580 znaków

2017-09-10 16:11
0

Dobra, już doszedłem do tego co takiego się działo! W końcu! :)
problem polegał w tym, że był tworzony obiekt np. "Jbutton but = new JButton" bez pola pola prywatnego, a powinno być pole prywatne a później zapis "but = new JButton". A tak właśnie myślałem cały czas, że chyba cos z tymi polami nie gra :)

Pozostało 580 znaków

2017-09-11 19:40
0

Nie wiedziałeś, że at Okno.UIWindow.wyjdzZLoginDalej(UIWindow.java:401) pokazuje Ci numer linii?


Przeważnie ignoruję niezarejestrowanych użytkowników.

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