public void setPopupMenu(JPopupMenu menu) {
JPopupMenu oldMenu = popupMenu;
popupMenu = menu;
firePropertyChange("popup", oldMenu, popupMenu);
}
public void setIcon(Icon ico) {
Icon oldIcon = this.icon;
this.icon = ico;
iconBounds = new Rectangle(0, 0, ico.getIconWidth(), ico.getIconHeight());
border.setIcon(icon);
firePropertyChange("icon", oldIcon, icon);
}
public Icon getIcon() {
return icon;
}
public JPopupMenu getPopupMenu() {
return popupMenu;
}
public Dimension getPreferredSize() {
Dimension size = super.getPreferredSize();
Insets insets = getInsets();
Insets margin = getMargin();
FontMetrics fm = getFontMetrics(getFont());
size.height = Math.max(fm.getHeight(), icon.getIconHeight()) + insets.top + insets.bottom;
return size;
}
private class MouseHandler extends MouseInputAdapter {
public void mouseMoved(MouseEvent e) {
if (iconBounds.contains(e.getPoint())) {
setCursor(Cursor.getDefaultCursor());
}
else {
setCursor(Cursor.getPredefinedCursor(Cursor.TEXT_CURSOR));
}
}
public void mouseClicked(MouseEvent e) {
if (iconBounds.contains(e.getPoint())) {
if (popupMenu.isVisible()) {
popupMenu.setVisible(false);
}
else {
popupMenu.show(IconTextField.this, 0, getHeight());
}
}
}
}
|