Prosty program – ocena podejścia do obsługi elementów UI

0

Witam zaczynam się uczyć Swinga nie ukrywam ze sprawia mi on sporo problemów . Napisałem prosty program i prosiłbym o ocenę . Dwa klawisze mają wywoływać dwie różne metody rysujące kwadraty w ramce . Poniższa składnia jest efektem (że tak powiem) interpretacji skrawków kodów z paru książek .
I teraz moja prośba czy takie podejście do obsługi elementów interfejsu graficznego jest poprawne ?
Docelowo zamierzam napisać prostą aplikację do gry w statki i staram się nauczyć niezbędnych technik . Za wszelkie sugestie będę wdzięczny .

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;


class Solution   {
    
    JFrame ramka;
    JTextField pole;
    rysowanie rys;
    rysowanie1 rys1;
     

public static void main (String[]args){

    //tworze obiekt klasy głównej

    Solution ala=new Solution();

    //uruchamiam metode start dla wczesniej utworzonego obiektu 

    ala.start();
}

void start (){

    ramka=new JFrame("Dwa przyciski");    

    //dodaje przyciski rozmieszczam je i rejestruje ActionListenery 

    JToggleButton przycisk1=new JToggleButton("Funkcja 1");
    przycisk1.setBounds(20,20,100,30);

    przycisk1.addActionListener(new wew1());

    ramka.add(przycisk1);

    JToggleButton przycisk2=new JToggleButton("Funkcja 2");
    przycisk2.setBounds(20,60,100,30);

    przycisk2.addActionListener(new wew2());    
   
    ramka.add(przycisk2);
    
    //rysuje i rozmieszczam kwadraty które są niewidoczne (LOL :P rysuje niewidoczne :P )

    rys=new rysowanie();
    rys.setBounds(150,30,200,200);
    rys.setVisible(false);
    ramka.add(rys);

    rys1=new rysowanie1();
    rys1.setBounds(150,90,300,300);
    rys1.setVisible(false);
    ramka.add(rys1);  
 
    //parametry ramki 

 ramka.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 ramka.setSize(500, 500);
 ramka.setLayout(null);
 ramka.setVisible(true);

 //dwie klasy wewnetrzne które mogą korzystać ze składowych klasy głownej nadpisujące metody interfejsu ActionListener 
 //Odpowiadają one za wywołanie metod po wciśnieciu guzika 

}
class wew1 implements ActionListener {

    @Override
    public void actionPerformed(ActionEvent zdarzenie){
        rys.setVisible(true);        

    }
}

class wew2 implements ActionListener{

    @Override
    public void actionPerformed(ActionEvent zdarzenie){  
        rys1.setVisible(true);     
        

    }
}

}

//dwie klasy zewnetrzne odpowiedzialne za rysowanie dziedziczą po JPanel
//nadpisują metodę paintComponent 

class rysowanie extends JPanel{

    public rysowanie(){
        
    }

    @Override

    public void paintComponent(Graphics g){

        g.setColor(Color.red);
        g.drawRect(30, 30, 45, 45);
    }

}

class rysowanie1 extends JPanel{

    public rysowanie1(){

    }
    @Override

    public void paintComponent (Graphics g){

        g.setColor(Color.blue);
        g.drawRect(30, 30, 45, 45);

    }
}
0

Ogólnie to nie ma tu czego oceniać, bo nic tu nie ma za bardzo, więc poprzychrzaniam się do szczegółów.

Dziwnie formatujesz kod. Zwróć uwagę na to jak to wygląda, bo wygląda to niechlujnie. Jak nie potrafisz przypilnować się sam, to kliknij przycisk w IDE, albo wrzuć to w jakiś program, który ci to sformatuje porządnie.

    Solution ala=new Solution();
class wew1
class wew2
class rysowanie1

Co to jest ala? Nadajesz nazwy, które kompletnie nic nie mówią.

Klasy rysowanie i rysowanie1 mają praktycznie identyczny kod. Dlaczego są to osobne klasy?

0

Dwie klasy ponieważ potrzebne mi były dwa obiekty do narysowania . W sumie nie przywiązuje uwagi do nazewnictwa nigdy się nad tym nie zastanawiałem .

0

Przede wszystkim, zastosuj formatowanie kodu. Jeśli korzystasz z IntelliJ to to jest Ctrl+Alt+L. Must-have.

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