隐藏/显示使用图形绘制的图像

时间:2017-07-07 13:39:34

标签: java graphics show-hide jcheckbox

我有多个用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);
}

2 个答案:

答案 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方法并将自定义绘图代码放在那里。