webForumDet fria alternativet

Bild i objekt

2 svar · 190 visningar · startad av gucken

guckenMedlem sedan sep. 2001288 inlägg
#1

Tjenare, sitte rhär och pluggar som bäst. har kollat runt på api´n hos java.sun.com, jag letar efter hur man lägger till en bakgrundsbild i en textArea. Det måste juh gå tycker jag, det optimala vore med vattenmärke. så att den alltid ligger i mitten, hur mycket man än scrollar. Nån som vet?

En annan sak jag har letat lite efter är hur man får en application att bli halvt transparent, det är ganska populärt ute på mjukvaru marknaden nu har jag sett. winamp 3.0 har juh anamat det.
Nån som vet om det går i java utan att man måste vara professor i matte?

LimeMedlem sedan sep. 2001837 inlägg
#2

ImageBackground

Man letar lite i sitt utility-bibliotek och hittar följande.

/*
 * JImageTextArea.java
 *
 * Created on den 5 september 2002, 14:07
 */

package lime.graphics.components;
import javax.swing.*;
import java.awt.*;
import java.awt.image.*;
import java.net.URL;

/** This class is an extension of a JTextArea that has a background image
 * in the TextArea.
 * @author ovli
 */
public class JImageTextArea extends javax.swing.JTextArea {
    Image image;
    
    /** Creates a new instance of JImageTextArea.
     * Stupid and empty and should not be used.
     */
    public JImageTextArea() {
        super();
        loadImage("bld.jpg");
        setOpaque(false);
    }
    
    /** Creates a new instance of JImageTextArea
     * @param i The image to display as background.
     */
    public JImageTextArea(Image i) {
        super();
        image = i;
        setOpaque(false);
    }
    
    /** Creates a new instance of JImageTextArea
     * @param i The image to display as background.
     * @param opaque If true the component paints every pixel within its bounds.
     * Otherwise, the component may not paint some or all of its pixels, allowing the underlying pixels to show through.
     */
    public JImageTextArea(Image i, boolean opaque) {
        super();
        image = i;
        setOpaque(opaque);
    }
   
     /** Creates a new instance of JImageTextArea
      * @param filename The name of the file that is to be uses as background.
      * @param opaque If true the component paints every pixel within its bounds.
      * Otherwise, the component may not paint some or all of its pixels, allowing the underlying pixels to show through.
      *
      */
    public JImageTextArea(String filename, boolean opaque) {
        super();
        loadImage(filename);
        setOpaque(opaque);
    }
    
      /** Creates a new instance of JImageTextArea
       * @param filename The name of the file that is to be used as background.
       */
    public JImageTextArea(String filename) {
        super();
        loadImage(filename);
        setOpaque(false);
    }
    
    private void loadImage(String filename){
        try{
            URL fileurl = ClassLoader.getSystemResource(filename);
            
            image  = this.getToolkit().getImage(fileurl);
            
        }
        catch(Exception e){ e.printStackTrace();}
        
        try {
          
            MediaTracker tracker = new MediaTracker(this);
            tracker.addImage(image, 0);
            tracker.waitForID(0);
        }
        catch ( Exception e ) {e.printStackTrace();};
        
    }
    
    /**
     * @param g The Graphics obeject.
     */    
    public void paintComponent(Graphics g) {
        g.drawImage(image,0,0,this);
        super.paintComponent(g);
    }
}

Det finns förbättringspotential... men jag har inte orkat.

/Lime

LimeMedlem sedan sep. 2001837 inlägg
#3

Transparent frames

Tjing igen.

Knepet med att få det att se transparant ut är att man helt enkelt fuskar... ;-)

Vad man gör är att man använder Robot-klassen och gör en screen-dump på det som finns på skärmen och så använder man det som finns bakom Framens koordinater som bakgrundsbild helt enkelt.

Tågordningen är alltså.

Gör din frame invisible
Dumpa skärmen i dom koordinater som du står i
Ta ut det som du behöver
Använd som bagrundsbild
Gör frame visible.

Återkommer kanske med kod om jag orkar göra det...

/Lime

Genererad på 385 ms · cache AV · v20260730165559-full.f96bc7eb