Hallo,
ich versuche einen halb durchsichtigen JInternalFrame zu realisieren, mit ebensolchen Buttons.
Die ButtonUI sieht dabei so aus - es wird mit einem TexturePaint instanziert, im Grunde ist es so eine Art Color, und damit wird in der Paint-Methode ein Rechteckgemalt.
Sonst ist gar nichts im Code.
Problem ist, wenn die Maus drüber geht oder geklickt wird; wird der Button von halbdurchsichtig immer mehr zu einem undurchsichtigen. Und das kriege ich nicht abgestellt.
ich versuche einen halb durchsichtigen JInternalFrame zu realisieren, mit ebensolchen Buttons.
Die ButtonUI sieht dabei so aus - es wird mit einem TexturePaint instanziert, im Grunde ist es so eine Art Color, und damit wird in der Paint-Methode ein Rechteckgemalt.
Sonst ist gar nichts im Code.
Problem ist, wenn die Maus drüber geht oder geklickt wird; wird der Button von halbdurchsichtig immer mehr zu einem undurchsichtigen. Und das kriege ich nicht abgestellt.
Code:
class DHP_OpaqueButton_UI extends BasicButtonUI {
private static TexturePaint Bild;
public DHP_OpaqueButton_UI(TexturePaint bild) {
Bild = bild;
}
public static ComponentUI createUI(JComponent c) {
return new DHP_OpaqueButton_UI(Bild);
}
private static MouseListener handCursorListener = new HandCursor();
protected void installDefaults(AbstractButton b) {
super.installDefaults(b);
b.setOpaque(false);
b.setBorderPainted(false);
b.setRolloverEnabled(true);
b.setHorizontalAlignment(AbstractButton.LEFT);
}
protected void installListeners(AbstractButton b) {
super.installListeners(b);
b.addMouseListener(handCursorListener);
}
protected void uninstallListeners(AbstractButton b) {
super.uninstallListeners(b);
b.removeMouseListener(handCursorListener);
}
public void paint(Graphics g, JComponent c) {
AbstractButton abstractButton = (AbstractButton) c;
ButtonModel model = abstractButton.getModel();
Graphics2D g2d = (Graphics2D)g;
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.5f));
g2d.setPaint(Bild);
g2d.fillRoundRect(0, 0, DHP_Popup_Constants.SIZE_OPAQUEBTN.width,DHP_Popup_Constants.SIZE_OPAQUEBTN.height, 15, 15);
if (model.isArmed() && model.isPressed()) {}
if (model.isRollover()) {}
if (model.isRollover()) {}
if (abstractButton.isFocusPainted() && abstractButton.hasFocus()) {}
}
protected void paintFocus(Graphics g, AbstractButton b, Rectangle viewRect,
Rectangle textRect, Rectangle iconRect) {}
protected void paintButtonPressed(Graphics g, AbstractButton b) {}
static class HandCursor extends MouseAdapter {
public void mouseEntered(MouseEvent e) {
e.getComponent().setCursor(
Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
}
public void mouseExited(MouseEvent e) {
e.getComponent().setCursor(Cursor.getDefaultCursor());
}
}
}