我有多个用Graphics绘制的图像。如何使用JCheckBox使它们显示和消失?
private void drawImages(int index) {
Graphics g = mNew.getGraphics();
int x = index % this.width;
int y = index / this.width;
g.drawImage(imageLabelPixel.get(idImage-1), x, y, 100, 100, null);
}
答案 0 :(得分:1)
您不会使用图形在要删除的屏幕上绘制内容。图形只是在屏幕上呈现它以及您绘制的所有其他图形,它不跟踪组件
您可以选择在复选框中添加操作事件,并从头开始重绘屏幕而不是绘制图像,或只使用Label
绘制图像并在选中此框时将其设置为不可见< / p>
答案 1 :(得分:0)
我会这样做:
JCheckBox cb = new JCheckBox();
ImgPanel p = new ImgPanel();
cb.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent evt){
if(cb.isSelected){
p.set(0);
} else {
p.set(-1);
}
}
});
public class ImgPanel extends JPanel {
private int i = 0;
private List<BufferedImage> imgs;
public ImgPanel(){
//init imgs
}
public void set(){
i = 0;
repaint();
}
@Override
public void paintComponent (Graphics g){
super.paintComponent(g);
if(i >= 0){
Image img = imgs.get(i-1);
Image img1 = img.getScaledInstance(100, 100, null);
}
g.drawImage(img1, 0, 0, null);
}
}
你不能简单地在图形上绘制,然后将其交给一个组件(我不明白你的代码应该做什么)。相反,您必须覆盖Component的paintComponent方法并将自定义绘图代码放在那里。