0

私は Java にあまり詳しくなく、現在の問題について少し無知です。メイン JFrame の別のクラス内に画像を描画しようとしていますが、常に画像のほんの一部 (おそらく 10x10px) を描画します。(Label を使用したテストは機能しました)

g.drawImage メソッドを正しく使用していないか、JPanel に十分なスペースがないのでしょうか??

メインウィンドウ:

public class Deconvolutioner extends JFrame {
Draw z;
Picturearea picturearea;

class Draw extends JPanel {
    public void paint(Graphics g) {


    }
}

public Deconvolutioner() {
    setTitle("Deconvolutioner");
    setLocation(30,1);
    setSize(1300,735);
    super.setFont(new Font("Arial",Font.BOLD,11));
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    FlowLayout flow = new FlowLayout(FlowLayout.CENTER);

    this.setLayout(flow);

    picturearea = new Picturearea();

    this.add(picturearea);

    add(z = new Draw());
    setVisible(true);

}

class Open implements ActionListener {
    public void actionPerformed(ActionEvent e) {
        JFileChooser fileOpen = new JFileChooser();
        FileFilter filter = new FileNameExtensionFilter("png & jpg files", "png",  
        "jpg");
        fileOpen.addChoosableFileFilter(filter);
        int returnVal = fileOpen.showDialog(null, "Open file");
        if (returnVal == JFileChooser.APPROVE_OPTION)  {
            try {
                String path = fileOpen.getSelectedFile().getPath();
                URL url = new File(path).toURI().toURL();
                BufferedImage img = ImageIO.read(url);

                picturearea.setPicture(img);

            } catch (IOException ex)  {
                System.err.println("Some IOException accured (set the right path?): ");
                System.err.println(ex.getMessage());
            }
        } else   {

        }

        repaint();
    }
}

そして別のクラス:

public class Picturearea extends JPanel {
  public BufferedImage image;
  Draw z;

  public Picturearea() {
      add(z = new Draw());
      setVisible(true);
  }

class Draw extends JPanel {
    @Override
    public void paint(Graphics g) {
        g.drawImage(image, 0, 0, this);

    }
}

public void setPicture(BufferedImage picture) {
    try  {                
        image = picture;
    }  catch (Exception e)  {
        System.err.println("Some IOException accured (did you set the right path?): ");
        System.err.println(e.getMessage());
    }
    repaint();
}

}

私はすべての助けに感謝しています。
御時間ありがとうございます。

4

1 に答える 1