Witam,
Uczę się Javy od tygodni i w tym momencie dotarłęm do obsługi zdarzeń. O ile JButton, KeyEventy i Mouse nie były kłopotliwe to złapałem się na JTextField. Program ma po wpisaniu wymiaru w polu tekstowym rysować odpowiedni kwadrat... ale nie rysuje... Proszę o pomoc ;) To mój pierwszy post, więc proszę o wyrozumiałośc doświadczonych forumowiczów i programistów.
import java.awt.*;
import java.awt.geom.*;
import javax.swing.*;
import javax.swing.event.*;
public class RysujPros {
public static void main(String[] args) {
MojaRamka ramka = new MojaRamka();
ramka.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ramka.show();
}
}
class MojaRamka extends JFrame {
public MojaRamka() {
this.setSize(szer, wys);
Container zestaw = getContentPane();
JPanel panelPoleTekstowe = new JPanel();
JTextField poleTekstowe = new JTextField(5);
panelPoleTekstowe.add(poleTekstowe);
zestaw.add(panelPoleTekstowe, BorderLayout.SOUTH);
DocumentListener sluchacz = new SluchaczPolaTekstowego();
poleTekstowe.getDocument().addDocumentListener(sluchacz);
kwadrat = new PanelRysunek();
zestaw.add(kwadrat, BorderLayout.CENTER);
}
public void zmienWymiar() {
try {
int wymiar = Integer.parseInt(poleTekstowe.getText().trim());
kwadrat.zmienWymiary(wymiar);
} catch (NumberFormatException w) {
}
}
private class SluchaczPolaTekstowego implements DocumentListener {
public void insertUpdate(DocumentEvent z) {
zmienWymiar();
}
public void removeUpdate(DocumentEvent z) {
zmienWymiar();
}
public void changedUpdate(DocumentEvent z) {
}
}
private PanelRysunek kwadrat;
private JTextField poleTekstowe;
private int szer = 300;
private int wys = 150;
}
class PanelRysunek extends JPanel {
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
Rectangle2D kw = new Rectangle2D.Double(10, 10, dlugosc, dlugosc);
g2.draw(kw);
}
public void zmienWymiary(int wym)
{
dlugosc = wym;
repaint();
}
private double dlugosc;
}