Hallo Leute,
also mein Ziel ist folgendes... Ich möchte gerne ein jPanel habe in dem ich andere Komponenten plazieren kann wie z.B. jButtons, dieses Panel möchte ich dann später "ein faden" können...
Nach suchen im Internet habe ich eine tolle Anleitung gefunden die erklärt wie man einen jButton zum faden bringen kann. Ich habe das dann einfach übernommen und daras ein Panel gemacht.
Das funktioniert auch ohne Probleme, das Panel fadet schön vor sich hin...
Auch wenn ich Komponenten hinzufüge (also ins Panel) faden diese schön mit...
Doch ich habe jetzt ein kleines Problem, das Panel hat einen schwarzen hintergrund und diesen möchte ich eigentlich gar nicht haben...
Ich möchte eigentlich dass das Panel an sich unsichtbar ist und nur die Komponenten im Panel sichtbar sind und diese eben faden...
Hat Jemand eine Idee?
Meine Klasse sieht wie folgt aus:
also mein Ziel ist folgendes... Ich möchte gerne ein jPanel habe in dem ich andere Komponenten plazieren kann wie z.B. jButtons, dieses Panel möchte ich dann später "ein faden" können...
Nach suchen im Internet habe ich eine tolle Anleitung gefunden die erklärt wie man einen jButton zum faden bringen kann. Ich habe das dann einfach übernommen und daras ein Panel gemacht.
Das funktioniert auch ohne Probleme, das Panel fadet schön vor sich hin...
Auch wenn ich Komponenten hinzufüge (also ins Panel) faden diese schön mit...
Doch ich habe jetzt ein kleines Problem, das Panel hat einen schwarzen hintergrund und diesen möchte ich eigentlich gar nicht haben...
Ich möchte eigentlich dass das Panel an sich unsichtbar ist und nur die Komponenten im Panel sichtbar sind und diese eben faden...
Hat Jemand eine Idee?
Meine Klasse sieht wie folgt aus:
Java:
import java.awt.AlphaComposite;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import javax.swing.JPanel;
import org.jdesktop.animation.timing.Animator;
import org.jdesktop.animation.timing.TimingTarget;
public class FadingPanel extends JPanel implements TimingTarget {
float alpha = 1.0f; // current opacity of button
Animator animator; // for later start/stop actions
int animationDuration = 2000; // each cycle will take 2 seconds
BufferedImage panelImage = null;
public FadingPanel() {
setOpaque(false);
animator = new Animator(animationDuration / 2, Animator.INFINITE, Animator.RepeatBehavior.REVERSE, this);
animator.setStartFraction(1.0f);
animator.setStartDirection(Animator.Direction.BACKWARD);
}
@Override
public void paint(Graphics g) {
// Create an image for the panel graphics if necessary
if (panelImage == null || panelImage.getWidth() != getWidth() || panelImage.getHeight() != getHeight()) {
panelImage = getGraphicsConfiguration().createCompatibleImage(getWidth(), getHeight());
}
Graphics gPanel = panelImage.getGraphics();
gPanel.setClip(g.getClip());
// Have the superclass render the button for us
super.paint(gPanel);
// Make the graphics object sent to this paint() method translucent
Graphics2D g2d = (Graphics2D) g;
AlphaComposite newComposite = AlphaComposite.getInstance(AlphaComposite.SRC_OVER, alpha);
g2d.setComposite(newComposite);
// Copy the button's image to the destination graphics, translucently
g2d.drawImage(panelImage, 0, 0, null);
}
@Override
public void begin() {
}
@Override
public void end() {
}
@Override
public void repeat() {
}
/**
* TimingTarget implementation: this method sets the alpha of our button to
* be equal to the current elapsed fraction of the animation
*/
@Override
public void timingEvent(float fraction) {
alpha = fraction;
// redisplay our cbutton
repaint();
}
public void startStopFading() {
if (!animator.isRunning()) {
animator.start();
} else {
animator.stop();
// reset alpha to opaque
alpha = 1.0f;
}
}
}