JAVA SWING - rysowanie po wybraniu jMenuItem

JAVA SWING - rysowanie po wybraniu jMenuItem
DG
  • Rejestracja:prawie 12 lat
  • Ostatnio:ponad 11 lat
  • Postów:8
0

Witajcie programiści.
Mam na podśmierdziałek oddać projekt, który polega na tym, że po wybraniu konkretnego jMenuItem z jMenuBar rysuje się figura. Całość jest ogólnie bardzo łopatologiczna, aczkolwiek mam w głowie czarną dziurę, przez którą nie jestem w stanie dokończyć projektu - nie wiem co w pisać jako akcję dla jMenuItem, by niżej została narysowana wybrana (jakakolwiek...) figura. Załączam niżej kod, który napisałem. Proszę o pomoc.
Pozdrawiam.

Kopiuj
package projekt_dwa;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.AbstractAction;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;


public class Projekt_Dwa extends JFrame {
    public Projekt_Dwa() {
        initUI();
    }
    
    public final void initUI() {
        JMenuBar menubar = new JMenuBar();
        
        JPanel panel = new JPanel();
        getContentPane().add(panel);
        panel.setLayout(null);
        
        ImageIcon inowy = new ImageIcon(getClass().getResource("nowy.png"));
        ImageIcon izapisz = new ImageIcon(getClass().getResource("zapisz.png"));
        ImageIcon iotworz = new ImageIcon(getClass().getResource("otworz.png"));
        ImageIcon idrukuj = new ImageIcon(getClass().getResource("drukuj.png"));
        ImageIcon iwyjscie = new ImageIcon(getClass().getResource("wyjscie.png"));
        ImageIcon ikolo = new ImageIcon(getClass().getResource("kolo.png"));
        ImageIcon ikwadrat = new ImageIcon(getClass().getResource("kwadrat.png"));
        ImageIcon iprostokat = new ImageIcon(getClass().getResource("prostokat.png"));
        ImageIcon itrojkat = new ImageIcon(getClass().getResource("trojkat.png"));
        ImageIcon iwielokat = new ImageIcon(getClass().getResource("wielokat.png"));
        ImageIcon iowal = new ImageIcon(getClass().getResource("owal.png"));
        ImageIcon ilinia = new ImageIcon(getClass().getResource("linia.png"));
        ImageIcon iprzesun = new ImageIcon(getClass().getResource("przesun.png"));
        ImageIcon irozmiar = new ImageIcon(getClass().getResource("rozmiar.png"));
        ImageIcon igradient = new ImageIcon(getClass().getResource("gradient.png"));
        ImageIcon itekstura = new ImageIcon(getClass().getResource("tekstura.png"));
        ImageIcon iczerwony = new ImageIcon(getClass().getResource("czerwony.png"));
        ImageIcon iniebieski = new ImageIcon(getClass().getResource("niebieski.png"));
        ImageIcon izielony = new ImageIcon(getClass().getResource("zielony.png"));
        ImageIcon ispis = new ImageIcon(getClass().getResource("spis.png"));
        ImageIcon io = new ImageIcon(getClass().getResource("o.png"));
        
        JMenu plik = new JMenu("Plik");
        JMenuItem p1MenuItem = new JMenuItem("Nowy", inowy);
        JMenuItem p2MenuItem = new JMenuItem("Zapisz", izapisz);
        JMenuItem p3MenuItem = new JMenuItem("Otwórz", iotworz);
        JMenuItem p4MenuItem = new JMenuItem("Drukuj", idrukuj);
        JMenuItem p5MenuItem = new JMenuItem("Wyjście", iwyjscie);
            p5MenuItem.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent event) {
                    System.exit(0);
                }
            });
        
        JMenu akcja = new JMenu("Akcja");
        JMenu a1MenuItem = new JMenu("Rysuj figurę");
            JMenuItem aa1MenuItem = new JMenuItem("Koło", ikolo);
            JMenuItem aa2MenuItem = new JMenuItem("Owal", iowal);
            JMenuItem aa3MenuItem = new JMenuItem("Kwadrat", ikwadrat);
            JMenuItem aa4MenuItem = new JMenuItem("Prostokąt", iprostokat);
            JMenuItem aa5MenuItem = new JMenuItem("Trójkąt", itrojkat);
            JMenuItem aa6MenuItem = new JMenuItem("Wielokąt", iwielokat);
            JMenuItem aa7MenuItem = new JMenuItem("Linia", ilinia);
        JMenuItem a2MenuItem = new JMenuItem("Przesuń figurę", iprzesun);
        JMenuItem a3MenuItem = new JMenuItem("Zmień rozmiar", irozmiar);
        
            JMenu kolor = new JMenu("Kolor");
        JMenu k1MenuItem = new JMenu("Standardowy");
            JMenuItem kk1MenuItem = new JMenuItem("Domyślny");
            JMenuItem kk2MenuItem = new JMenuItem("Czerwony", iczerwony);
            JMenuItem kk3MenuItem = new JMenuItem("Niebieski", iniebieski);
            JMenuItem kk4MenuItem = new JMenuItem("Zielony", izielony);
        JMenuItem k2MenuItem = new JMenuItem("Gradient", igradient);
        JMenuItem k3MenuItem = new JMenuItem("Textura", itekstura);
        
        JMenu pomoc = new JMenu("Pomoc");
        JMenuItem po1MenuItem = new JMenuItem("Spis pomocy", ispis);
        JMenuItem po2MenuItem = new JMenuItem(new AbstractAction("O programie", io) {
            public void actionPerformed (ActionEvent e) {
                javax.swing.JOptionPane.showMessageDialog(null, "Drugi projekt na GiKC-K\nAutor: DawidG3\nKopyrajty itp", "O programie", JOptionPane.INFORMATION_MESSAGE);
            }
        });
        
        
        plik.add(p1MenuItem);
        plik.add(p2MenuItem);
        plik.add(p3MenuItem);
        plik.add(p4MenuItem);
        plik.add(p5MenuItem);
        
        akcja.add(a1MenuItem);
            a1MenuItem.add(aa1MenuItem);
            a1MenuItem.add(aa2MenuItem);
            a1MenuItem.add(aa3MenuItem);
            a1MenuItem.add(aa4MenuItem);
            a1MenuItem.add(aa5MenuItem);
            a1MenuItem.add(aa6MenuItem);
            a1MenuItem.add(aa7MenuItem);
        akcja.add(a2MenuItem);
        akcja.add(a3MenuItem);
        
        kolor.add(k1MenuItem);
            k1MenuItem.add(kk1MenuItem);
            k1MenuItem.add(kk2MenuItem);
            k1MenuItem.add(kk3MenuItem);
            k1MenuItem.add(kk4MenuItem);
        kolor.add(k2MenuItem);
        kolor.add(k3MenuItem);
        
        pomoc.add(po1MenuItem);
        pomoc.add(po2MenuItem);
        
        
        menubar.add(plik);
        menubar.add(akcja);
        menubar.add(kolor);
        menubar.add(pomoc);
        
        
        setJMenuBar(menubar);
        setTitle("GiKC-K - Projekt 2");
        setSize(800, 600);
        setLocationRelativeTo(null);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
    }
 
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                Projekt_Dwa ex = new Projekt_Dwa();
                ex.setVisible(true);
            }
        });
    }
}
bogdans
Moderator
  • Rejestracja:prawie 17 lat
  • Ostatnio:prawie 5 lat
0

Chcesz rysować po panelu?

Kopiuj
JPanel panel = new MyPanel();
getContentPane().add(panel);
//panel.setLayout(null); niepotrzebne

Poniższą klasę najwygodniej zdefiniować jako klasę wewnętrzną

Kopiuj
class MyPanel extends JPanel
{
     public MyPanel()
     {
         setPreferredSize(new Dimension(600,400));
         setBackground(Color.WHITE);
     }
     public void paintComponent(Graphics g)
     {
         super.paintComponent(g);
         //w zależności od tego co wybrał użytkownik z menu, np.
         g.drawRect(....);
     }
}

Do każdej pozycji w menu przypinasz ActionListenera, w obsłudze zdarzenia ustawiasz jakąś zmienną decydującą co ma być narysowane i wywołujesz repaint().


To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell
edytowany 1x, ostatnio: bogdans
DG
  • Rejestracja:prawie 12 lat
  • Ostatnio:ponad 11 lat
  • Postów:8
0

Chcę po prostu narysować te figurki.

Zdefiniowałem klasę MyPanel.

Czy przypięcie ActionListenera do pozycji i ustawienie zmiennej ma wyglądać tak:

Kopiuj
JMenuItem po1MenuItem = new JMenuItem("Spis pomocy", ispis);
            po1MenuItem.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent event) {
                    int a;
                }
            });

Gdzie mam wywołać repaint()?

bogdans
Moderator
  • Rejestracja:prawie 17 lat
  • Ostatnio:prawie 5 lat
0
Kopiuj
JMenuItem aa1MenuItem = new JMenuItem("Koło", ikolo);
            aa1MenuItem.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent event) {
                    coRysowac = ...;
                    repaint();
                }
            });

coRysować jest polem w klasie, np. typu int

Kopiuj
     public void paintComponent(Graphics g)
     {
         super.paintComponent(g);
         switch(coRysowac)
         {
              ...
         }
     }

To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell
edytowany 1x, ostatnio: bogdans
DG
  • Rejestracja:prawie 12 lat
  • Ostatnio:ponad 11 lat
  • Postów:8
0
Kopiuj
public class Projekt_Dwa_F extends JFrame {
    int coRysowac;
    
    class MyPanel extends JPanel {
        public MyPanel() {
            setPreferredSize(new Dimension(600,400));
            setBackground(Color.WHITE);
        }
        public void paintComponent(Graphics g) {
            super.paintComponent(g);
            switch (coRysowac) {
                case 1: { System.out.println("Komunikat informujący o case 1.");
                }
            }
        }
    }
// dalsza część kodu

czy deklaracja zmiennej coRysowac typu int jest w dobrym miejscu?
Switch przypisany na sztywno w ramach testów.

Kopiuj
JMenuItem aa1MenuItem = new JMenuItem("Koło", ikolo);
                aa1MenuItem.addActionListener(new ActionListener() {
                    public void actionPerformed(ActionEvent event) {
                        coRysowac = 1;
                        repaint();
                        System.out.println("Komunikat testowy.");
                    }
                });

Po kliknięciu na Akcja -> Rysuj figurę -> Koło w konsoli widzę Komunikat testowy, czyli kliknięcie na Koło zostało poprawnie odczytane przez program i wykonała się instrukcja wypisania komunikatu. Dlaczego po przypisaniu zmiennej coRysowac wartości 1 nie wykonało się wyświetlenie komunikatu Komunikat informujący o case 1?

edytowany 1x, ostatnio: DawidG3
bogdans
Moderator
  • Rejestracja:prawie 17 lat
  • Ostatnio:prawie 5 lat
0

Niemożliwe, na pewno zmieniłeś

Kopiuj
JPanel panel = new JPanel();

na

Kopiuj
JPanel panel = new MyPanel();

To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell
DG
  • Rejestracja:prawie 12 lat
  • Ostatnio:ponad 11 lat
  • Postów:8
0

W ogóle gdzieś mi uciekły te 2 linijki:

Kopiuj
JPanel panel = new MyPanel();
getContentPane().add(panel);

Teraz już jest OK. I tło jest białe, i switch działa :) Elegancko. Piszę dalej. Dam znać jak skończę. Póki co dziękuję za pomoc ;)

edytowany 1x, ostatnio: DawidG3
airborn
  • Rejestracja:ponad 15 lat
  • Ostatnio:prawie 7 lat
  • Postów:274
0

Pytanie z mojej strony, czy na pewno chcesz się trzymać tych nic nie znaczących intów determinujących co ma zostać narysowane? Takie rzeczy można zrobić np. z wykorzystaniem enumów co znacznie poprawi czytelność kodu, albo z zastosowaniem akcji, która jako argument będzie przyjmowała dany kształt a następnie w actionPerformed go po prostu ustawi (dzięki temu możesz pozbyć się całego switcha)

DG
  • Rejestracja:prawie 12 lat
  • Ostatnio:ponad 11 lat
  • Postów:8
0

Te nic nieznaczące inty są OK. To tylko projekt na zajęcia. Jeśli będzie taka potrzeba, to zastosuję te magiczne dla mnie enumy ;)

Koniec końców projekt wygląda jak niżej. Dziękuję bogdans za pomoc! :)

Kopiuj
package projekt_dwa_f;
 
import java.awt.AWTException;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.imageio.ImageIO;
import javax.swing.AbstractAction;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;


public class Projekt_Dwa_F extends JFrame {
    int coRysowac=0;
    int jakiKolor=0;
    
    public Projekt_Dwa_F() {
        initUI();
    }
 
    public final void initUI() {
        JMenuBar menubar = new JMenuBar();
        
        JPanel panel = new MyPanel();
        getContentPane().add(panel);
        
        ImageIcon inowy = new ImageIcon(getClass().getResource("nowy.png"));
        ImageIcon izapisz = new ImageIcon(getClass().getResource("zapisz.png"));
        ImageIcon iotworz = new ImageIcon(getClass().getResource("otworz.png"));
        ImageIcon idrukuj = new ImageIcon(getClass().getResource("drukuj.png"));
        ImageIcon iwyjscie = new ImageIcon(getClass().getResource("wyjscie.png"));
        ImageIcon ikolo = new ImageIcon(getClass().getResource("kolo.png"));
        ImageIcon ikwadrat = new ImageIcon(getClass().getResource("kwadrat.png"));
        ImageIcon iprostokat = new ImageIcon(getClass().getResource("prostokat.png"));
        ImageIcon itrojkat = new ImageIcon(getClass().getResource("trojkat.png"));
        ImageIcon iwielokat = new ImageIcon(getClass().getResource("wielokat.png"));
        ImageIcon iowal = new ImageIcon(getClass().getResource("owal.png"));
        ImageIcon ilinia = new ImageIcon(getClass().getResource("linia.png"));
        ImageIcon iprzesun = new ImageIcon(getClass().getResource("przesun.png"));
        ImageIcon irozmiar = new ImageIcon(getClass().getResource("rozmiar.png"));
        ImageIcon igradient = new ImageIcon(getClass().getResource("gradient.png"));
        ImageIcon itekstura = new ImageIcon(getClass().getResource("tekstura.png"));
        ImageIcon iczarny = new ImageIcon(getClass().getResource("czarny.png"));
        ImageIcon iczerwony = new ImageIcon(getClass().getResource("czerwony.png"));
        ImageIcon iniebieski = new ImageIcon(getClass().getResource("niebieski.png"));
        ImageIcon izielony = new ImageIcon(getClass().getResource("zielony.png"));
        ImageIcon ispis = new ImageIcon(getClass().getResource("spis.png"));
        ImageIcon io = new ImageIcon(getClass().getResource("o.png"));
 
        JMenu plik = new JMenu("Plik");
        JMenuItem p1MenuItem = new JMenuItem("Nowy", inowy);
            p1MenuItem.addActionListener(new ActionListener() {
                    public void actionPerformed(ActionEvent event) {
                        coRysowac = 0;
                        repaint();
                    }
                });
        JMenuItem p2MenuItem = new JMenuItem("Zapisz", izapisz);
            p2MenuItem.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent event) {
                    BufferedImage image = null;
                    try {
                        image = new Robot().createScreenCapture(new Rectangle(Toolkit.getDefaultToolkit().getScreenSize()));
                    } catch (AWTException ex) {
                        Logger.getLogger(Projekt_Dwa_F.class.getName()).log(Level.SEVERE, null, ex);
                    }
                    try {
                        ImageIO.write(image, "png", new File("d:/screenshot.png"));
                    } catch (IOException ex) {
                        Logger.getLogger(Projekt_Dwa_F.class.getName()).log(Level.SEVERE, null, ex);
                    }
                }
            });
        JMenuItem p3MenuItem = new JMenuItem(new AbstractAction("Otwórz", iotworz) {
            public void actionPerformed(ActionEvent e) {
                javax.swing.JOptionPane.showMessageDialog(null, "Opcja 'Otwórz' niedostępna.", "Błąd", JOptionPane.ERROR_MESSAGE);
            }
        });
        JMenuItem p4MenuItem = new JMenuItem(new AbstractAction("Drukuj", idrukuj) {
            public void actionPerformed(ActionEvent e) {
                javax.swing.JOptionPane.showMessageDialog(null, "Opcja 'Drukuj' niedostępna.", "Błąd", JOptionPane.ERROR_MESSAGE);
            }
        });
        JMenuItem p5MenuItem = new JMenuItem("Wyjście", iwyjscie);
            p5MenuItem.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent event) {
                    System.exit(0);
                }
            });
 
        JMenu akcja = new JMenu("Akcja");
        JMenu a1MenuItem = new JMenu("Rysuj figurę");
            JMenuItem aa1MenuItem = new JMenuItem("Koło", ikolo);
                aa1MenuItem.addActionListener(new ActionListener() {
                    public void actionPerformed(ActionEvent event) {
                        coRysowac = 1;
                        repaint();
                    }
                });
            JMenuItem aa2MenuItem = new JMenuItem("Owal", iowal);
                aa2MenuItem.addActionListener(new ActionListener() {
                    public void actionPerformed(ActionEvent event) {
                        coRysowac = 2;
                        repaint();
                    }
                });
            JMenuItem aa3MenuItem = new JMenuItem("Kwadrat", ikwadrat);
                aa3MenuItem.addActionListener(new ActionListener() {
                    public void actionPerformed(ActionEvent event) {
                        coRysowac = 3;
                        repaint();
                    }
                });
            JMenuItem aa4MenuItem = new JMenuItem("Prostokąt", iprostokat);
                aa4MenuItem.addActionListener(new ActionListener() {
                    public void actionPerformed(ActionEvent event) {
                        coRysowac = 4;
                        repaint();
                    }
                });
            JMenuItem aa5MenuItem = new JMenuItem("Trójkąt", itrojkat);
                aa5MenuItem.addActionListener(new ActionListener() {
                    public void actionPerformed(ActionEvent event) {
                        coRysowac = 5;
                        repaint();
                    }
                });
            JMenuItem aa6MenuItem = new JMenuItem("Wielokąt", iwielokat);
                aa6MenuItem.addActionListener(new ActionListener() {
                    public void actionPerformed(ActionEvent event) {
                        coRysowac = 6;
                        repaint();
                    }
                });
            JMenuItem aa7MenuItem = new JMenuItem("Linia", ilinia);
                aa7MenuItem.addActionListener(new ActionListener() {
                    public void actionPerformed(ActionEvent event) {
                        coRysowac = 7;
                        repaint();
                    }
                });
        JMenuItem a2MenuItem = new JMenuItem(new AbstractAction("Przesuń figurę", iprzesun) {
            public void actionPerformed(ActionEvent e) {
                javax.swing.JOptionPane.showMessageDialog(null, "Opcja 'Przesuń figurę' niedostępna.", "Błąd", JOptionPane.ERROR_MESSAGE);
            }
        });
        JMenuItem a3MenuItem = new JMenuItem(new AbstractAction("Zmień rozmiar", irozmiar) {
            public void actionPerformed(ActionEvent e) {
                javax.swing.JOptionPane.showMessageDialog(null, "Opcja 'Zmień rozmiar' niedostępna.", "Błąd", JOptionPane.ERROR_MESSAGE);
            }
        });
 
        JMenu kolor = new JMenu("Kolor");
            JMenu k1MenuItem = new JMenu("Standardowy");
                JMenuItem kk1MenuItem = new JMenuItem("Domyślny", iczarny);
                    kk1MenuItem.addActionListener(new ActionListener() {
                        public void actionPerformed(ActionEvent event) {
                            jakiKolor = 1;
                            repaint();
                        }
                    });
                JMenuItem kk2MenuItem = new JMenuItem("Czerwony", iczerwony);
                   kk2MenuItem.addActionListener(new ActionListener() {
                      public void actionPerformed(ActionEvent event) {
                          jakiKolor = 2;
                           repaint();
                       }
                   });
               JMenuItem kk3MenuItem = new JMenuItem("Niebieski", iniebieski);
                    kk3MenuItem.addActionListener(new ActionListener() {
                        public void actionPerformed(ActionEvent event) {
                            jakiKolor = 3;
                            repaint();
                        }
                    });
                JMenuItem kk4MenuItem = new JMenuItem("Zielony", izielony);
                    kk4MenuItem.addActionListener(new ActionListener() {
                        public void actionPerformed(ActionEvent event) {
                            jakiKolor = 4;
                            repaint();
                        }
                    });
            JMenuItem k2MenuItem = new JMenuItem(new AbstractAction("Gradient", igradient) {
                public void actionPerformed(ActionEvent e) {
                    javax.swing.JOptionPane.showMessageDialog(null, "Opcja 'Gradient' niedostępna.", "Błąd", JOptionPane.ERROR_MESSAGE);
                }
            });
            JMenuItem k3MenuItem = new JMenuItem(new AbstractAction("Textura", itekstura) {
                public void actionPerformed(ActionEvent e) {
                    javax.swing.JOptionPane.showMessageDialog(null, "Opcja 'Texturua' niedostępna.", "Błąd", JOptionPane.ERROR_MESSAGE);
                }
            });
 
        JMenu pomoc = new JMenu("Pomoc");
            JMenuItem po1MenuItem = new JMenuItem(new AbstractAction("Spis pomocy", ispis) {
                public void actionPerformed(ActionEvent e) {
                    javax.swing.JOptionPane.showMessageDialog(null, "Opcja 'Spis pomocy' niedostępna.", "Błąd", JOptionPane.ERROR_MESSAGE);
                }
            });
            JMenuItem po2MenuItem = new JMenuItem(new AbstractAction("O programie", io) {
                public void actionPerformed (ActionEvent e) {
                    javax.swing.JOptionPane.showMessageDialog(null, "Drugi projekt na GiKC-K\nAutor: DawidG3\nKopyrajty itp", "O programie", JOptionPane.INFORMATION_MESSAGE);
                }
            });
            
 
        plik.add(p1MenuItem);
        plik.add(p2MenuItem);
        plik.add(p3MenuItem);
        plik.add(p4MenuItem);
        plik.add(p5MenuItem);
 
        akcja.add(a1MenuItem);
            a1MenuItem.add(aa1MenuItem);
            a1MenuItem.add(aa2MenuItem);
            a1MenuItem.add(aa3MenuItem);
            a1MenuItem.add(aa4MenuItem);
            a1MenuItem.add(aa5MenuItem);
            a1MenuItem.add(aa6MenuItem);
            a1MenuItem.add(aa7MenuItem);
        akcja.add(a2MenuItem);
        akcja.add(a3MenuItem);
 
        kolor.add(k1MenuItem);
            k1MenuItem.add(kk1MenuItem);
            k1MenuItem.add(kk2MenuItem);
            k1MenuItem.add(kk3MenuItem);
            k1MenuItem.add(kk4MenuItem);
        kolor.add(k2MenuItem);
        kolor.add(k3MenuItem);
 
        pomoc.add(po1MenuItem);
        pomoc.add(po2MenuItem);
 
 
        menubar.add(plik);
        menubar.add(akcja);
        menubar.add(kolor);
        menubar.add(pomoc);
 
 
        setJMenuBar(menubar);
        setTitle("GiKC-K - Projekt 2");
        setSize(800, 600);
        setLocationRelativeTo(null);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
    }
    
    class MyPanel extends JPanel {
        public MyPanel() {
            setPreferredSize(new Dimension(800,600));
            setBackground(Color.white);
        }
        public void paintComponent(Graphics g) {
            super.paintComponent(g);
            Graphics2D g2d = (Graphics2D)g.create();
            
            switch (jakiKolor) {
                case 1: {
                    g.setColor(Color.black);
                    break;
                }
                case 2: {
                    g.setColor(Color.red);
                    break;
                }
                case 3: {
                    g.setColor(Color.blue);
                    break;
                }
                case 4: {
                    g.setColor(Color.green);
                    break;
                }
            }
            
            switch (coRysowac) {
                case 0: {
                    g.fillRect(0,0,0,0);
                    break;
                }
                case 1: {
                    g.fillOval(20, 50, 100, 100);
                    break;
                }
                case 2: {
                    g.fillOval(150, 50, 200, 100);
                    break;
                }
                case 3: {
                    g.fillRect(50, 50, 150, 150);
                    break;
                }
                case 4: {
                    g.fillRect(80, 80, 200, 20);
                    break;
                }
                case 5: {
                    int iksy[] = {225, 145, 45};
                    int igreki[] = {245, 15, 225};
                    int en = 3;
                    g.fillPolygon(iksy, igreki, en);
                    break;
                }
                case 6: {
                    int iksy[] = {150, 350, 550, 450, 250};
                    int igreki[] = {150, 50, 150, 300, 300};
                    int en = 5;
                    g.fillPolygon(iksy, igreki, en);
                    break;
                }
                case 7: {
                    g.drawLine(50, 100, 200, 350);
                    break;
                }
            }
        }
    }
    
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                Projekt_Dwa_F p2 = new Projekt_Dwa_F();
                p2.setVisible(true);
            }
        });
    }
}
bogdans
W swoim programie użyłbym enumów, Tobie zaproponowałem inty, bałem się, że Cię enumy przerażą.
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)