java - Centering image in a JFrame? -
i'm creating jframe program. have icon used program , have show first thing on jframe, i'm having issues trying center image. if kind of centering screws whole alignment of else.
i'm trying have jlabels, other icon, left aligned. have icon aligned center.
i had remove personal information, whatever did remove put them between "[]".
import java.awt.dimension; import java.awt.font; import javax.swing.borderfactory; import javax.swing.box; import javax.swing.boxlayout; import javax.swing.imageicon; import javax.swing.jframe; import javax.swing.jlabel; import javax.swing.jpanel; public class extends jframe { public about() { super("about [program]"); seticonimage([program].getinstance().seticon()); jpanel main = new jpanel(); main.setlayout(new boxlayout(main, boxlayout.y_axis)); main.setborder(borderfactory.createemptyborder(10,10,10,10)); jlabel icon = new jlabel("", new imageicon(getclass().getresource(constants.icon_full)), jlabel.center); jlabel name = new jlabel("[program]"); jlabel expandedname = new jlabel("[program description]"); jlabel copyright = new jlabel("[copyright junk]"); jlabel credits = new jlabel("[credits]"); name.setfont(new font(name.getfont().getfamily(), font.bold, 18)); copyright.setborder(borderfactory.createemptyborder(0,0,10,0)); main.add(icon); main.add(box.createrigidarea(new dimension(0, 10))); main.add(name); main.add(expandedname); main.add(copyright); main.add(credits); add(main); pack(); setlocationrelativeto(null); setvisible(true); } }
consider using layouts out. ones come mind include borderlayout icon in borderlayout.center position. can stack stuff on 1 side using boxlayout using jpanel added main borderlayout-using jpanel.
e.g.,
import java.awt.borderlayout; import java.awt.font; import java.awt.event.actionevent; import java.awt.image.bufferedimage; import java.io.ioexception; import java.net.malformedurlexception; import java.net.url; import javax.imageio.imageio; import javax.swing.*; @suppresswarnings("serial") public class extends jdialog { public static final string image_path = "http://upload.wikimedia.org/wikipedia/" + "commons/thumb/3/39/european_common_frog_rana_temporaria.jpg/" + "800px-european_common_frog_rana_temporaria.jpg"; public about(jframe frame) { super(frame, "about [program]", true); imageicon myicon = null; try { url imgurl = new url(image_path); bufferedimage img = imageio.read(imgurl); myicon = new imageicon(img); } catch (malformedurlexception e) { e.printstacktrace(); system.exit(-1); } catch (ioexception e) { e.printstacktrace(); system.exit(-1); } jpanel main = new jpanel(new borderlayout()); main.setborder(borderfactory.createemptyborder(10, 10, 10, 10)); jlabel centerlabel = new jlabel(myicon); jlabel name = new jlabel("[program]"); jlabel expandedname = new jlabel("[program description]"); jlabel copyright = new jlabel("[copyright junk]"); jlabel credits = new jlabel("[credits]"); name.setfont(new font(name.getfont().getfamily(), font.bold, 18)); copyright.setborder(borderfactory.createemptyborder(0, 0, 10, 0)); int eb = 20; centerlabel.setborder(borderfactory.createemptyborder(eb, eb, eb, eb)); jpanel leftpanel = new jpanel(); leftpanel.setlayout(new boxlayout(leftpanel, boxlayout.page_axis)); leftpanel.add(name); leftpanel.add(box.createverticalglue()); leftpanel.add(expandedname); leftpanel.add(copyright); leftpanel.add(credits); leftpanel.add(box.createverticalglue()); main.add(centerlabel, borderlayout.center); main.add(leftpanel, borderlayout.line_start); add(main); pack(); } public static void main(string[] args) { final jframe frame = new jframe("gui"); jpanel panel = new jpanel(); panel.add(new jbutton(new abstractaction("about") { @override public void actionperformed(actionevent e) { about = new about(frame); about.setlocationrelativeto(frame); about.setvisible(true); } })); frame.add(panel); frame.pack(); frame.setlocationrelativeto(null); frame.setdefaultcloseoperation(jframe.exit_on_close); frame.setvisible(true); } }
Comments
Post a Comment