구성 요소를 작성했으며 구성 요소를 사용자 정의하려면 ActionListener
을 추가하려고합니다.
JButton
과 같은 구성 요소를 만들고 Events
에 actionPerformed
이벤트를 표시하고 디자인보기에서 대화 상자를 표시하려고합니다.ActionListener를 추가하여 구성 요소를 사용자 정의하는 방법
JBaseComponent
클래스는 JComponent
에서 파생됩니다.
코드 :
public class JCButton extends JBaseComponent implements ActionListener,ItemSelectable,ChangeListener{
private JButton _button=new JButton();
private ActionEvent _actevent=new ActionEvent(this,ActionEvent.ACTION_PERFORMED,"");
public JCButton() {
super();
_button.setPreferredSize(new Dimension(105, 25));
_button.setFocusTraversalKeysEnabled(false);
_button.addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e) {
JComponent c = (JComponent) e.getSource();
TransferHandler handler = c.getTransferHandler();
handler.exportAsDrag(c, e, TransferHandler.COPY);
}
});
_button.setTransferHandler(new TransferHandler("btn"));
setColorFocus(false);
_button.addActionListener(this);
actionPerformed(_actevent);
addActionListener(this);
revalidate();
repaint();
add(_button);
}
public void setText(String txt){
_button.setText(txt);
}
public void setIcon(Icon ico){
_button.setIcon(ico);
}
public void addActionListener(ActionListener act){
_button.addActionListener(act);
}
@Override
public void actionPerformed(ActionEvent e) {
}
@Override
public Object[] getSelectedObjects() {
return null;
}
@Override
public void addItemListener(ItemListener l) {
}
@Override
public void removeItemListener(ItemListener l) {
}
@Override
public void stateChanged(ChangeEvent e) {
}
}
는 JBasicComponent의 도출 및 대안으로 두 개의 클래스 – user1874800
의 도출 할 수 없기 때문에, AbtractButton를 사용 _composition_ 및 또는 _delegation_을 고려하지 수 있습니다. – trashgod