swing - Java - Is there a way to insert a background image in a JList? -


jlists don't offer method this, , that's sad. know how it?

fixed position list (ie image fixed, can scroll list)...

enter image description here

import java.awt.borderlayout; import java.awt.color; import java.awt.dimension; import java.awt.eventqueue; import java.awt.graphics; import java.awt.graphics2d; import java.awt.image.bufferedimage; import java.io.file; import java.io.ioexception; import javax.imageio.imageio; import javax.swing.jframe; import javax.swing.jlist; import javax.swing.jpanel; import javax.swing.jscrollpane; import javax.swing.uimanager; import javax.swing.unsupportedlookandfeelexception;  public class backgroundlist {      public static void main(string[] args) {         new backgroundlist();     }      public backgroundlist() {         eventqueue.invokelater(new runnable() {             @override             public void run() {                 try {                     uimanager.setlookandfeel(uimanager.getsystemlookandfeelclassname());                 } catch (classnotfoundexception | instantiationexception | illegalaccessexception | unsupportedlookandfeelexception ex) {                 }                  jframe frame = new jframe("testing");                 frame.setdefaultcloseoperation(jframe.exit_on_close);                 frame.setlayout(new borderlayout());                 frame.add(new testpane());                 frame.pack();                 frame.setlocationrelativeto(null);                 frame.setvisible(true);             }         });     }      public class testpane extends jpanel {          private jlist list;         private bufferedimage background;          public testpane() {             setlayout(new borderlayout());             try {                 background = imageio.read(new file("c:\\users\\shane\\dropbox\\megatokyo\\_cg_836___tilting_windmills___by_serena_clearwater.png"));             } catch (ioexception ex) {                 ex.printstacktrace();             }              int count = 50;             string[] values = new string[count];             (int index = 0; index < count; index++) {                 values[index] = "testing " + (index + 1);             }              list = new jlist(values);             list.setopaque(false);             list.setbackground(new color(0, 0, 0, 0));             list.setforeground(color.white);              jscrollpane scrollpane = new jscrollpane(list);             scrollpane.setopaque(false);             scrollpane.getviewport().setopaque(false);              add(scrollpane);          }          @override         public dimension getpreferredsize() {             return new dimension(200, 200);         }          @override         protected void paintcomponent(graphics g) {             super.paintcomponent(g);             if (background != null) {                 graphics2d g2d = (graphics2d) g.create();                 int x = getwidth() - background.getwidth();                 int y = getheight() - background.getheight();                 g2d.drawimage(background, x, y, this);                 g2d.dispose();             }         }     } } 

scrollable background...

bascially, image "scroll" list....

enter image description here

import java.awt.borderlayout; import java.awt.color; import java.awt.dimension; import java.awt.eventqueue; import java.awt.graphics; import java.awt.graphics2d; import java.awt.image.bufferedimage; import java.io.file; import java.io.ioexception; import javax.imageio.imageio; import javax.swing.jframe; import javax.swing.jlist; import javax.swing.jpanel; import javax.swing.jscrollpane; import javax.swing.uimanager; import javax.swing.unsupportedlookandfeelexception;  public class backgroundlist {      public static void main(string[] args) {         new backgroundlist();     }      public backgroundlist() {         eventqueue.invokelater(new runnable() {             @override             public void run() {                 try {                     uimanager.setlookandfeel(uimanager.getsystemlookandfeelclassname());                 } catch (classnotfoundexception | instantiationexception | illegalaccessexception | unsupportedlookandfeelexception ex) {                 }                  jframe frame = new jframe("testing");                 frame.setdefaultcloseoperation(jframe.exit_on_close);                 frame.setlayout(new borderlayout());                 frame.add(new testpane());                 frame.pack();                 frame.setlocationrelativeto(null);                 frame.setvisible(true);             }         });     }      public class testpane extends jpanel {          private jlist list;         private bufferedimage background;          public testpane() {             setlayout(new borderlayout());             try {                 background = imageio.read(new file("c:\\users\\shane\\dropbox\\megatokyo\\_cg_836___tilting_windmills___by_serena_clearwater.png"));             } catch (ioexception ex) {                 ex.printstacktrace();             }              int count = 50;             string[] values = new string[count];             (int index = 0; index < count; index++) {                 values[index] = "testing " + (index + 1);             }              list = new backgroundimagelist(values);              jscrollpane scrollpane = new jscrollpane(list);             scrollpane.setopaque(false);             scrollpane.getviewport().setopaque(false);              add(scrollpane);          }     }      public class backgroundimagelist extends jlist {         private bufferedimage background;          public backgroundimagelist(object[] values) {             super(values);             try {                 background = imageio.read(new file("c:\\users\\shane\\dropbox\\megatokyo\\_cg_836___tilting_windmills___by_serena_clearwater.png"));             } catch (ioexception ex) {                 ex.printstacktrace();             }             setopaque(false);             setbackground(new color(0, 0, 0, 0));             setforeground(color.white);         }          @override         protected void paintcomponent(graphics g) {             if (background != null) {                 graphics2d g2d = (graphics2d) g.create();                 int x = getwidth() - background.getwidth();                 int y = getheight() - background.getheight();                 g2d.drawimage(background, x, y, this);                 g2d.dispose();             }             super.paintcomponent(g);         }      } } 

Comments