Witam,
jako początkujący programista nie chciałbym nabyć złych nawyków. Starałem się wymyślić dla siebie jakiś edukacyjny przykład, w którym działo by się coś ciekawego (oczywiście na tym etapie). W związku z tym moje pytanie czy są tutaj jakieś potężne strzały itd?? Coś czego kategorycznie nie należy robić. Z góry dziękuję za odp.
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import java.util.*;
import javax.swing.*;
import javax.swing.border.Border;
public class TestSiatki {
public static void main(String[] args) {
RamkaGlowna ramka = new RamkaGlowna();
ramka.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ramka.setVisible(true);
}
}
class RamkaGlowna extends JFrame {
public RamkaGlowna() {
Toolkit zestaw = Toolkit.getDefaultToolkit();
Dimension wymiar = zestaw.getScreenSize();
SZER = wymiar.width;
WYS = wymiar.height;
this.setSize(SZER / 2, WYS / 2);
this.setLocation(SZER / 4, WYS / 4);
this.setName("Siatki");
final PanelRysowania rysowanie = new PanelRysowania();
Container powZawartosci = getContentPane();
powZawartosci.add(rysowanie, BorderLayout.CENTER);
JMenuBar pasekMenu = new JMenuBar();
this.setJMenuBar(pasekMenu);
JMenu mPlik = new JMenu("Plik");
JMenuItem mNowy = new JMenuItem("Nowy");
JMenuItem mOtw = new JMenuItem("Otworz plik");
JMenuItem mZapisz = new JMenuItem("Zapisz plik");
JMenuItem mZakoncz = new JMenuItem("Zakoncz");
pasekMenu.add(mPlik);
mPlik.add(mNowy);
mPlik.add(mOtw);
mPlik.add(mZapisz);
mPlik.addSeparator();
mPlik.add(mZakoncz);
mZakoncz.setToolTipText("Zamyka program, bez zapisywania zmian");
JPanel panelOpcja = new JPanel();
JButton przyciskDodaj = new JButton("Opcje wstawiania");
przyciskDodaj.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
OknoOpcja opcja = new OknoOpcja();
opcja.setVisible(true);
}
});
final JComboBox wyborSiatki = new JComboBox();
wyborSiatki.addItem("100");
wyborSiatki.addItem("150");
wyborSiatki.addItem("200");
panelOpcja.add(przyciskDodaj);
panelOpcja.add(wyborSiatki);
powZawartosci.add(panelOpcja, BorderLayout.SOUTH);
wyborSiatki.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent zdarzenie) {
Siatka.ustawWymiar(Integer.parseInt((String) wyborSiatki
.getSelectedItem()));
}
});
mZakoncz.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
zamknijProgram();
}
});
}
public void zamknijProgram() {
this.dispose();
}
private static int WYS;
private static int SZER;
}
class PanelRysowania extends JPanel {
public PanelRysowania() {
this.setBackground(Color.GRAY);
listaSiatek = new ArrayList();
listaLinie = new ArrayList();
this.addMouseListener(new klikMyszki());
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
for (int i = 0; i < listaSiatek.size(); i++)
g2.draw((Rectangle2D) listaSiatek.get(i));
for (int i = 0; i < listaLinie.size(); i++)
g2.draw((Line2D) listaLinie.get(i));
}
private class klikMyszki extends MouseAdapter {
public void mousePressed(MouseEvent zdarzenie) {
listaSiatek.add(new Siatka(zdarzenie.getX(), zdarzenie.getY())
.zwrocSiatka());
// listaLinie.add(new Siatka(zdarzenie.getX(), zdarzenie.getY())
// .zwrocLinie());
repaint();
}
}
private ArrayList listaSiatek;
private ArrayList listaLinie;
}
class Siatka {
public Siatka(double ax, double ay) {
x = ax;
y = ay;
}
public Rectangle2D zwrocSiatka() {
if (p == "LGR") {
siatka = new Rectangle2D.Double(x, y, w, w);
return siatka;
} else {
siatka = new Rectangle2D.Double(x - w / 2, y - w / 2, w, w);
return siatka;
}
}
public Line2D zwrocLinie() {
double x1 = x + w / 2;
double y1 = y;
double x2 = x + w / 2;
double y2 = y + w;
linia = new Line2D.Double(x1, y1, x2, y2);
return linia;
}
public static void ustawWymiar(int aWym) {
w = aWym;
}
public static void ustawPkt(String punkt) {
p = punkt;
}
private static String p;
private static int w;
private double x, y;
private Rectangle2D siatka;
private Line2D linia;
}
class OknoOpcja extends JFrame {
public OknoOpcja() {
Toolkit zestaw = Toolkit.getDefaultToolkit();
Dimension wymiar = zestaw.getScreenSize();
SZER = wymiar.width;
WYS = wymiar.height;
this.setSize(SZER / 3, WYS / 3);
this.setLocation(SZER / 4, WYS / 4);
this.setName("Opcje");
final ButtonGroup grupa = new ButtonGroup();
final JRadioButton lewRog = new JRadioButton("LGR");
final JRadioButton cen = new JRadioButton("CENTER");
grupa.add(cen);
grupa.add(lewRog);
Container powZawartosci = getContentPane();
JPanel panelPrzy = new JPanel();
panelPrzy.add(lewRog);
panelPrzy.add(cen);
panelPrzy.setBorder(BorderFactory
.createTitledBorder("Punkt wstawiania"));
powZawartosci.add(panelPrzy, BorderLayout.CENTER);
JButton przyciskOK = new JButton("OK");
powZawartosci.add(przyciskOK, BorderLayout.SOUTH);
przyciskOK.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
if (lewRog.isSelected() == true) {
Siatka.ustawPkt("LGR");
lewRog.setSelected(true);
} else {
Siatka.ustawPkt("C");
cen.setSelected(true);
}
}
});
}
private static int SZER;
private static int WYS;
}