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

Odpowiedz Nowy wątek
2020-02-04 02:37

Rejestracja: 4 miesiące temu

Ostatnio: 1 tydzień temu

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

    }
}
edytowany 2x, ostatnio: furious programming, 2020-02-04 02:43

Pozostało 580 znaków

2020-02-05 19:13

Rejestracja: 5 lat temu

Ostatnio: 20 minut temu

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?


My to na arm napiszemy wszystko i zrobimy co chcemy tyle że 90% kodu to biblioteki z netu albo robota kompilatora Zdajesz sobie sprawę że tak na prawdę wyższy poziom języka może świadczyć jedynie o tym jak niskim poziomem wiedzy może dysponować bałwan,który nazwie się w rezultacie programistą i napisze działający program wciskając zleceniodawcy że tam to akurat musi być 100MHz ARM z 1M pamięci bo tak na prawdę jego pusta łepetyna nie potrafi zrealizować czegoś na innym słabszym mikrokontrolerze

Pozostało 580 znaków

2020-02-05 20:54

Rejestracja: 4 miesiące temu

Ostatnio: 1 tydzień temu

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 .

Pozostało 580 znaków

2020-02-11 14:07

Rejestracja: 9 lat temu

Ostatnio: 34 minuty temu

0

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


Pozostało 580 znaków

Odpowiedz

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