アプリ版:「スタンプのみでお礼する」機能のリリースについて

ボタンをクリック後にstaticで保持していた値にプラス1して
その値をパネルに再描画したいと思っています。
下記のプログラムだとボタンをクリックすると
(<1<2<3<4)となって画像と数字が増えてしまいます
行いたいのは数字の部分だけが再描画されて
カウントされて<3と表示されるだけになってもらいたい


クラス1つ目

import java.awt.BorderLayout;
import java.awt.Cursor;
import java.awt.event.MouseEvent;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;


public class Sample extends JFrame{
static int value=1;
JPanel work = new JPanel();
public static void main(String[] args) {
Sample frame = new Sample();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setBounds(100, 200, 200, 100);
frame.add(frame.createPanel(), BorderLayout.LINE_END);
frame.setVisible(true);
}
public JPanel createPanel() {

ImageIcon icon = new ImageIcon("./img/left.gif");
JLabel label = new JLabel();
Cursor c = new Cursor(Cursor.HAND_CURSOR);
label.setCursor(c);
label.setIcon(icon);
JLabel strLabel = new JLabel();
String str = Integer.toString(value);
strLabel.setText(str);
work.add(label);
work.add(strLabel);
label.addMouseListener(new myListener());
return work;
}
class myListener extends MouseAdapter{
public void mouseClicked(MouseEvent e){
System.out.print(Sample.value++);
createPanel().repaint();
setVisible(true);
}
}
}


クラス2つ目
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

public class MouseAdapter implements MouseListener{
public void mouseClicked(MouseEvent e){}
public void mouseEntered(MouseEvent e){}
public void mouseExited(MouseEvent e){}
public void mousePressed(MouseEvent e){}
public void mouseReleased(MouseEvent e){}
}

「ボタンクリック後パネルを再描画repai」の質問画像

A 回答 (1件)

>class myListener extends MouseAdapter{


>createPanel().repaint();

createPanelでパネルを新規作成してrepaintしていますから、そういった動作になると思います。
labelをクラス変数として保持して、そこに設定するのが簡単だと思います。
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!