Witam,
Chciałbym zmienić wygląd komponentu, żeby działałał jak JCheckBox, ale wygladał inaczej. Przesłaniam, więc metodę paintComponet(Graphics g), żeby rysowała krzyżyk i wszystko dzaiła, jeśli w środku mam instrukcję "super.paintComponent(g);", ale wtedy rysuje się też ten standardowy komponent, a tego nie chcę.
Jak wywalę tę instrukję, to nie działa jak należy, bo po odchaczeniu krzyżyk nie znika (znika dopiero przy zmianie wielkości okna), a nie chcę wstawiać instrukcji wymazania, żeby nie zamazywało mi tła.
Jak to poprawić?
Wrzucam caly kod, ale chodzi oczywiście o poprawkę w ostatniej klasie Krzyzyk
import java.awt.EventQueue;
import java.awt.FlowLayout;
import java.awt.Graphics;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
public class test{
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable(){
public void run(){
JFrame ramka=new Ramka();
ramka.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ramka.setVisible(true);
}
});
}
}
class Ramka extends JFrame{
public Ramka(){
setSize(300,300);
setLayout(new FlowLayout());
add(new Krzyzyk());
add(new JButton("przycisk"));
add(new Krzyzyk());
add(new Krzyzyk());
}
}
class Krzyzyk extends JCheckBox{
public void paintComponent(Graphics g){
//super.paintComponent(g);
g.drawRect(0, 0, getHeight(), getWidth());
if(this.isSelected()){
g.drawLine(0, 0, getHeight(), getWidth());
g.drawLine(getHeight(), 0, 0, getWidth());
}
}
}