0

だから、ここに私の問題があります。JLabel を含む JPanel があり、JLabel をクリックするとサイズが変更される必要があります (理想的にはスケールに合わせて変更されますが、今のところ定数値を使用しています)。画像を返しましたが、スケーリングできるようになりましたが、元の JLabel を新しいサイズにすることはできません。

したがって、これが理想的に起こるべきことであり、e.getSource は新しくサイズが大きくなった JLabel になるはずです。

私はかなり近いことを知っています.JOptionPaneをデバッグステートメントとして実行して、サイズを大きくできるかどうかを確認しました。

なぜカント ((JLabel)me.getSource = a; a は私の新しい JLabel?

とにかく、ここに私のコードがあります:

私を助けてください。

public void mousePressed(MouseEvent me) {
        //GreetingCard.setBackground.findComponentAt(me.getX(), me.getY());
        //GreetingCard.setBackground.findComponentAt(me.getX(), me.getY)

      JLabel a= (JLabel) me.getSource();
      Icon icon = a.getIcon();

        int scale = 4;

        BufferedImage bi = new BufferedImage(
            scale*icon.getIconWidth(),
            scale*icon.getIconHeight(),
            BufferedImage.TYPE_INT_ARGB);
            Graphics2D g = bi.createGraphics();
            g.scale(scale,scale);
            icon.paintIcon(null,g,0,0);
            g.dispose();
            JLabel temp = new JLabel(new ImageIcon(bi));
            ((JLabel)me.getSource())= temp;

        JOptionPane.showMessageDialog(
            null,
            new JLabel(new ImageIcon(bi)));

      System.out.println("The size of the image is" + b.getIconWidth());
      initiateEvent = me;
        me.consume();



}
4

1 に答える 1

0

me.getSource() は JLabel を返します。新しい値を割り当てることができる変数は返しません。

おそらく最善の方法は、新しい JLabel を作成するのではなく、古い JLabel に新しい ImageIcon を割り当てることです。

((JLabel)me.getSource()).setIcon(new ImageIcon(bi));

また、ラベルまたはパネルの updateUI() を呼び出して、サイズ変更を伴う「ハード」な再描画を強制する必要があります。

于 2012-10-30T22:30:45.337 に答える