-1

実際に私がする必要があるのは... 画像(通常はサイズが大きい)に描画します。画像をスクロールして描画する必要があります。この目的のために、画像 (JLabel) を Jpanel に追加し、Jpanel を JScrollPane に追加しました。画像をスクロールすることはできますが、描画することはできません。誰かがそれを理解するのを手伝ってくれませんか!! これが私のコードです... `

    JFrame frame = new JFrame("Title");  
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setPreferredSize(new Dimension(800, 800)); 

    JPanel panel = new JPanel(); 

    panel.add(new JLabel(new ImageIcon(image))); 

    JScrollPane jspane=new JScrollPane(panel);
    jspane.setViewportView(panel);
    jspane.add(this); //where i need to draw according to the mouse click
                      //when i tried frame.add(this); i was able to draw only on some  
                      //portion of the image but not able to scroll it.
    frame.add(jspane, BorderLayout.CENTER);

    frame.pack();  

    frame.setVisible(true);
4

1 に答える 1

1

jspane.add(これ);

コンポーネントをスクロールペインに追加しようとしないでください。コンポーネントはビューポートにのみ追加できます (これは JScrollPane を作成したときに行いました。

ラベルに描画する場合は、JLabel を拡張し、paintComponent() メソッドをオーバーライドして、画像の上にカスタム ペイントを行う必要があります。

例として、カスタム ペインティングに関する Swing チュートリアルのセクションをお読みください。

于 2013-11-11T16:31:31.200 に答える