Avatar billede duca Nybegynder
09. december 2003 - 17:25 Der er 2 kommentarer og
1 løsning

JList og Baggrundsbillede

Hej!

Er det muligt at have et billede liggende bag en JList som en slags baggrundsbillede.
Jeg ved godt man ikke kan sætte selve billedet på JListen, men jeg tænkte på om man kunne gøre den transperant og have f.eks. et imageicon liggende bagved?
Er der nogen som kan give et eksempel?

På forhånd mange tak!
Avatar billede _carsten Nybegynder
09. december 2003 - 17:48 #1
Du kan ikke gøre det transparent på den måde du ønsker det, men det du gerne vil, kan opnåes på anden måde

Her er adskillige eksempler:
http://java.sun.com/products/jfc/tsc/articles/swing2d/
Avatar billede duca Nybegynder
09. december 2003 - 18:01 #2
KANON .... tusind tak!!!!
Avatar billede mikkelbm Nybegynder
09. december 2003 - 18:16 #3
Det kan faktisk godt lade sig gøre...
prøv følgende:

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Graphics;
import java.net.URL;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;

public class Test extends JFrame {

    private JList dataList;
    private JScrollPane scrollPane;

    public Test() {
        //JPanel content = new JPanel();
        //content.setLayout(null);
        getContentPane().setLayout(null);
        //getContentPane().add(content);
        ((JPanel) getContentPane()).setOpaque(false);

        URL bgImage = getClass().getClassLoader().getResource("bg.jpg");
        final ImageIcon m_image = new ImageIcon(bgImage);
        final int winc = m_image.getIconWidth();
        final int hinc = m_image.getIconHeight();
        JPanel backPanel = new JPanel();
        //JLabel backlabel = new JLabel("");
       

        /* add datalist */
        dataList = new JList(new Object[] { "this", "is", "a", "test" });
        dataList.setOpaque(false);
        //dataList.setSelectionBackground(new Color(1.0f, 1.0f, 1.0f, 0.6f));

        dataList.setBackground(new Color(1.0f, 1.0f, 1.0f, 0.6f));
        dataList.setFont(new Font("Arial", Font.PLAIN, 10));
        scrollPane = new JScrollPane(dataList);
        scrollPane.setSize(new Dimension(165, 60));
        scrollPane.setLocation(75, 10);
        scrollPane.setOpaque(false);
        scrollPane.getViewport().setOpaque(false);
       
        //scrollPane.getViewport().setBackground(
            //new Color(1.0f, 1.0f, 1.0f, 0.6f));
           
        getContentPane().add(scrollPane);
       
        if (m_image.getIconWidth() > 0 && m_image.getIconHeight() > 0) {
            backPanel = new JPanel(){
                public void paintComponent(Graphics g ){
                    super.paintComponent(g);
                    int w = getParent().getWidth();
                    int h = getParent().getHeight();
                    //m_image.paintIcon(this, g, 0,0);
                   
                    for (int i=0;i<h+hinc;i=i+hinc)
                        for (int j=0;j<w+winc;j=j+winc)
                            m_image.paintIcon(this,g,j,i);
                }
               
            /*    public Dimension getPreferredSize(){
                    return new Dimension(super.getSize());
                }
               
                public Dimension getMinimumSize() {
                    return getPreferredSize();
                }*/
            };

        }
       
        getLayeredPane().add( backPanel, new Integer( Integer.MIN_VALUE ) );
        backPanel.setBounds(0, 0, 5000, 5000);
        setSize(250, 100);
        setVisible(true);
   
    }
    public static void main(String[] args) {
        Test w = new Test();
        w.setBounds(200, 200, 400, 200);
        w.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        w.show();
    }
}

Gør nøjagtig hvad du spørger efter...
Du ændre selvfølgelig bare "bg.jpg" til dit baggrundsbillede...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester