Witam, chciałbym prosić o pomoc przy rysowaniu. W programie są dwa przyciski. Chodzi o to, by przy wywołaniu programu możliwe było, by jednym z nich dorysować do stanu początkowego zmiany, a drugim te zmiany cofnąć. Obecnie odbywa się to w ten sposób, że jeden przycisk rysuje zmiany (ale nie zachowuje stanu początkowego - pewnie przez super.paintComponent(gt)), a drugi rysuje od nowa stan początkowy. Czy jest to w jakiś sposób możliwe? Dodam jeszcze, że jeżeli usunę linię super.paintComponent(gt), to owszem zmiany są nakładane na rysunek pierwotny, ale nie umiem wtedy cofnąć tych zmian. Bardzo dziękuje za pomoc. Poniżej mój kod:
@Override
public void paintComponent(Graphics gt) {
super.paintComponent(gt);
int j = 0;
int k = 0;
boolean przycisk = isPrzemaluj();
HSV hsv = new HSV();
ustaw();
int[] temp_nacisk = getPkPressure();
int[] temp_x = null;
int[] temp_y = null;
int[] temp_p = null;
temp_p = getPkPressure();
if (choice && przemaluj) {
temp_x = getTabx();
temp_y = getTaby();
} else {
temp_x = getTablicaX();
temp_y = getTablicaY();
}
for (k = 0; k < temp_x.length; k++) {
if (przemaluj) {
if (temp_p[k] != 0) {
gt.setColor(new Color(hsv.getColor((float) temp_nacisk[k] / 4).x,
hsv.getColor((float) temp_nacisk[k] / 4).y,
hsv.getColor((float) temp_nacisk[k] / 4).z));
gt.drawLine(temp_x[k] / 20, temp_y[k] / 20, temp_x[k] / 20, temp_y[k] / 20);
if (choice) {
gt.setColor(new Color(0, 0, 0));
gt.drawLine(temp_x[k] / 20, temp_y[k] / 20, temp_x[k] / 20, temp_y[k] / 20);
}
}
} else {
if (temp_p[k] != 0) {
gt.setColor(new Color(hsv.getColor((float) temp_nacisk[k] / 4).x,
hsv.getColor((float) temp_nacisk[k] / 4).y,
hsv.getColor((float) temp_nacisk[k] / 4).z));
gt.drawLine(temp_x[k] / 20, temp_y[k] / 20, temp_x[k] / 20, temp_y[k] / 20);
}
}
}
}
class Ramka extends JFrame {
public Ramka() {
String[] bufory = {"1", "3", "7", "15", "30", "45", "60", "75", "90", "100"};
setTitle("Tablet");
setSize(1000, 800);
final Tablet panel = new Tablet();
panel.setBackground(Color.WHITE);
add(panel);
panel.setVisible(true);
JPanel ButtonPanel = new JPanel();
JButton koryguj = new JButton("Koryguj");
JButton wyczysc = new JButton("Wyczysc korekte");
final JComboBox lista = new JComboBox(bufory);
ButtonPanel.add(wyczysc, BorderLayout.CENTER);
ButtonPanel.add(koryguj, BorderLayout.CENTER);
ButtonPanel.add(lista, BorderLayout.CENTER);
koryguj.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent event) {
panel.setPrzemaluj(true);
int index = lista.getSelectedIndex();
String selected = (String) lista.getItemAt(index);
int bufor = Integer.parseInt(selected);
panel.popraw(bufor);
panel.repaint();
panel.setVisible(true);
}
});
wyczysc.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent event) {
panel.setPrzemaluj(false);
panel.repaint();
}
});
add(ButtonPanel, BorderLayout.SOUTH);
setVisible(true);
}
}