Gå til innhold

Gjennomsiktig bakgrunn i JPane ell?


Anbefalte innlegg

Videoannonse
Annonse

Hei

 

Jeg har lenge vært på leting etter det du spør om, og har samlet kodesnutter her og der og laga et lite eksempel:

 


package simplegui;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Paint;
import java.awt.geom.AffineTransform;
import java.awt.image.BufferedImage;

import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class ScaledImagePanel extends JPanel {

private Image bgImage;

public ScaledImagePanel() {
 this.bgImage = (new ImageIcon("DSCF0509.JPG")).getImage();
}
public void paintComponent(Graphics g) {
 
 double scaleX = this.getWidth() / (double) bgImage.getWidth(null);
 double scaleY = this.getHeight() / (double) bgImage.getHeight(null);
 AffineTransform xform = AffineTransform.getScaleInstance(scaleX, scaleY);
 ((Graphics2D) g).drawImage(bgImage, xform, this);
}

public static void main(String[] args) {	

 
 //Noen paneler med ikke-aktive knapper for demoens skyld
 JPanel foo = new JPanel(new BorderLayout());
 JPanel bar = new JPanel();
 foo.setOpaque(false);
 bar.setOpaque(false);
 bar.setBorder(BorderFactory.createTitledBorder("Some Buttons and shit"));
 bar.add(new JButton("Jadda"));
 bar.add(new JButton("Ja rekti"));
 foo.add(bar, BorderLayout.NORTH);
 
 ScaledImagePanel sp = new ScaledImagePanel();
 JFrame frame = new JFrame();
 frame.getContentPane().add(sp);
 sp.add(foo);

 frame.pack();
 frame.setVisible(true);
 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

 

kjipt at ikke tabs blir tatt hensyn til, men..

Endret av jhsveli
Lenke til kommentar

OK, det saag litt mer avansert ut en jeg tenkte meg, men siden jeg kommer til og ha kun3-4 forskjellig vinduer, er det sikkert like greit og lage 4 bakgrunns objecter, og legge til det jeg vil ha til ver av dem....

 

Men takk for forslaget...

 

[EDIT] takk for tipset, setOpaque funket fint det:D

Endret av Richard87
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...