Podstawowe GUI - brak podłączenia Buttonów oraz inne błędy

0
package kalkulator;

import javax.swing.*;

public class Components extends JPanel{
    JButton add;
    JButton substract;
    JButton multiple;
    JButton divide;
    JPanel panel;
   

  
public void Components(){
     add=        new JButton("+");
     substract=  new JButton("-");
     multiple=   new JButton("*");
     divide=     new JButton("\\");
             }
public void addPanel(){
    panel = new JPanel(); 
    panel.add(panel);
    panel.add(add);
    panel.add(substract);
    panel.add(multiple);
    panel.add(divide);
   
}  

}




package kalkulator;

import java.awt.FlowLayout;
import javax.swing.JFrame;

public class Frame extends JFrame {
    Components component= new Components();
    
    
    public Frame(){
    super("Kalkulator");
    setSize(500,400);
    setVisible(true);
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    setLocation(400,200);
    
    
    this.component= new Components();
    component.addPanel();
    component.setVisible(true);
    component.setLayout(new FlowLayout());
    
}



}




package kalkulator;
import java.awt.EventQueue;

public class Kalkulator {

    
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
			@Override
			public void run() {
				new Frame();
                               
                                
			}
		});
        
    }
    
}

1.Błąd: java.lang.IllegalArgumentException: adding container's parent to itself
2.Nie podłącza mi buttonow z klasy Components.
Mam klase z przyciskami, w której jak dla mnie wszystko działa. podłaczam to pod panel. Powiedzcie co jest źle. Bez poprawiania kodu. czysta teorie na temat tego co mam zle, czego brakuje(na razie chodzi mi o o wizualne efekty. Jak to zadziala bede podłączac ActionListenery i dopieszczał program

0
  1. A niby jakiego efektu spodziewasz się robąc panel.add(panel);?
  2. jw, może chciałeś zrobić this.add(panel);?
0

1.Faktycznie bez sensu. Chyba nie myślałem w tym momencie co robie ....
2.Poprawiłem. "AWT-EventQueue-0" java.lang.NullPointerException taki o to blad sie pojawił.

0

Znaczy ze wołasz metodę na czymś czemu nie przypisałeś żadnego obiektu za pomocą new...

0

Mam tylko jedna metode addPanel(); i wywołuje ja na component.addPanel();
a component przypisalem obiekt za pomoca new. CHociaz widze ze na pewno sie myle.

`dodanie znaczników ``` - @furious programming

0

Przecież stacktrace pokazuje na konkretną linijkę w kodzie gdzie sie to dzieje. Jak nie wierzysz to wstaw tam breakpointa, uruchom program w trybie debug i się tam zatrzyma przed wykonaniem instrukcji. Będziesz wtedy widział co jest nullem.

1

Kod jest bez ładu i składu (eufemizm na bez sensu). Podstawowy błąd to brak zdefiniowanego konstruktora w klasie Components, stąd wynika, że pola add,substract,.. są równe null.

0

W jakim celu tworzysz

Components component= new Components();

Później jeszcze raz na nowo tworzysz ten obiekt, uruchamiając na nim metody, a dodatkowo nie budujesz obiektu JFrame, zobacz tutorial jak się tworzy gui:
http://docs.oracle.com/javase/tutorial/uiswing/components/frame.html

0

Wiem, że to lipa. próbowałem coś skleić bez wiedzy z dwóch gotowych aplikacji. Coś tam wiem ale jak widać bardzo niewiele. Madaoo dzieki za tutka, już sie za niego zabieram.

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