taşıma Olay whitch Jpanel uzanır:MouseListener'da tıklatılan JPanel bileşenini belirleyin. Bir sınıf olması
public class ButtonPanel extends JPanel {
private label;
public ButtonPanel() {
label=new JLabel("waiting for click");
add(label);
}
public void setButtonText() {
label.setText("just clicked");
}
}
Ben JFrame eklenir bu sınıfın birkaç kopyası olabilir. MouseAdapter sınıfının bir instanse'si oluşturmak ve daha sonra bunları JFrame'imdeki tüm ButtonPanel bileşenlerine bir fare dinleyicisi olarak eklemek istiyorum. Ben meen:
ButtonPanel butt1 = new ButtonPanel();
ButtonPanel butt2 = new ButtonPanel();
ButtonPanel butt3 = new ButtonPanel();
//... here goes code which add ButtonPanels to JFrame
MouseAdapterMod mam = new MouseAdapterMod();
butt1.addMouseListener(mam);
butt2.addMouseListener(mam);
butt3.addMouseListener(mam);
MouseAdapterMod sınıf I diğerinden ayrı ve kendi paketinde bulmak istiyoruz. Gelmeli şuna benzer:
public class MouseAdapterMod extends MouseAdapter {
public void mouseClicked(MouseEvent e) {
//here goes the code of calling setButtonText method of ButtonPanel component on which the event had occurred
}
}
Yani sorun ben ButtonPanel olay üretmek ve() metodu bu bileşen setButtonText tekabül çağrı belirlemek yapmak mouseClicked yönteminin nasıl uygulanacağını bilmiyorum olmasıdır. Bunu yapmayı bilen var mı?
Bunu, ButtonPanel sınıfında olay işleme işlevselliği dahil ederek başarabileceğimi biliyorum, ancak bu benim için uygun bir yol değil, çünkü yukarıda anlattığım gibi sınıf yapısını korumak istiyorum ve yalnızca bir MouseAdapterMod sınıfı örneğine sahip olmak istiyorum Tüm ButtonPanels'ları ele almak.
Kudos. Paylaşılan bir dinleyici yazarken kurtarmaya bir kez daha –