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