java - What is the proper way to set a JLabel to show an image? -
below snippet create imageicon , jlabel:
imageicon armorshopicon = new imageicon("/images/armorshop.png", "armor shop"); jlabel armorshoplabel = new jlabel("armor shop", armorshopicon, jlabel.center); object.setarmorimage(armorshoplabel);
then in object class have setter:
public void setarmorimage(jlabel label) { this.jlabel1 = label; }
this doesn't show image when test application , wondering if point out mistake
edit
most of source code:
main:
public class main extends javax.swing.jframe { public main() { initcomponents(); imageicon armoricon = new imageicon("/images/armorshop.png", "armor shop"); jlabel armorshoplabel = new jlabel("armor shop", armorshopicon, jlabel.center); shopdisplay armorshop = new shopdisplay(); armorshop.setarmorimage(armorshoplabel); public initcomponents() { /*more generated code here*/ } } }
display:
public class shopdisplay extends javax.swing.jpanel { /** creates new form shopdisplay */ public shopdisplay() { initcomponents(); } //generated gui builder //initcomponents private void initcomponents() { jlabel1 = new javax.swing.jlabel(); jlabel1.settext("shop name"); gridbagconstraints = new java.awt.gridbagconstraints(); gridbagconstraints.fill = java.awt.gridbagconstraints.both; gridbagconstraints.weightx = 1.0; gridbagconstraints.weighty = 1.0; add(jlabel1, gridbagconstraints); } //variable declarationg private javax.swing.jlabel jlabel1; //setter shop name public void setarmorimage(jlabel shoplabel) { this.jlabel1 = shoplabel; } //other setters //multiple jlabels }
the label pass not added gui, following method might help-
add jpanel container of jlabel1
, replace content:
i.e.:
private javax.swing.jpanel containerpanel; private void initcomponents() { jlabel1 = new javax.swing.jlabel(); jlabel1.settext("shop name"); gridbagconstraints = new java.awt.gridbagconstraints(); gridbagconstraints.fill = java.awt.gridbagconstraints.both; gridbagconstraints.weightx = 1.0; gridbagconstraints.weighty = 1.0; containerpanel = new javax.swing.jpanel(); containerpanel.add(jlabel1); add(containerpanel, gridbagconstraints); } //variable declarationg private javax.swing.jlabel jlabel1; //setter shop name public void setarmorimage(jlabel shoplabel) { containerpanel.remove(jlabel1); containerpanel.add(shoplabel); jlabel1 = shoplabel; revalidate(); }
, if want add gui can 1 of following:
set properties of
jlabel1
properties ofshoplabel
,this.jlabel1.settext(shoplabel.gettext());
or- remove
jlabel1
, addshoplabel
, setthis.jlabel1
shoplabel
:
for example:
public void setarmorimage(jlabel shoplabel) { remove(jlabel1); add(shoplabel); jlabel1 = shoplabel; revalidate(); }
Comments
Post a Comment