eclipse - How to place tabs over JInternalFrame title bar in Java Swing? -
eclipse - How to place tabs over JInternalFrame title bar in Java Swing? -
i want have jinternalframe able handle jtabbedpane much eclipse ide. want tabs sit down on top of title bar. each tab should have own close button. internalframe should have close button user can close tabs in 1 go.
this have:
this want have (screenshot taken eclipse ide):
i don't know how can accomplish this. can please point me in right direction?
edit:
based on comment ui delegate, created ui delegate subclass able remove menu, there problems this:
it looks kind of funny in comparing normal jinternalframe, though haven't done comment out "createactionmap" , "add(menubar)" lines.
i can't find anywhere in library code indicate how title bar , contentpane positions set - want move position of contentpane overlap title bar.
here codes:
public class myinternalframeui extends basicinternalframeui { public myinternalframeui(jinternalframe b) { super(b); // todo auto-generated constructor stub } public static componentui createui(jcomponent b) { homecoming new myinternalframeui((jinternalframe)b); } protected jcomponent createnorthpane(jinternalframe w) { titlepane = new mybasicinternalframetitlepane(w); homecoming titlepane; } } public class mybasicinternalframetitlepane extends basicinternalframetitlepane { public mybasicinternalframetitlepane(jinternalframe f) { super(f); } protected void installtitlepane() { installdefaults(); installlisteners(); createactions(); enableactions(); //createactionmap(); // method bundle protected , not visible setlayout(createlayout()); assemblesystemmenu(); createbuttons(); addsubcomponents(); } protected void addsubcomponents() { //add(menubar); // remove disable menu add(iconbutton); add(maxbutton); add(closebutton); } }
to reply 1 part close button. solution add together close button (there no alternative built in swing). have implement closetab(…) method or improve solution callback handler
protected class closetabbutton extends jpanel { private jlabel titlelabel; protected closetabbutton(jtabbedpane atabbedpane, final abstractobservableobjectjpanel<m> adetailpanel, string atitle, icon anicon) { setopaque(false); titlelabel = new jlabel(atitle, anicon, jlabel.left); add(titlelabel); imageicon closeimage = new imageicon( closetabbutton.class.getresource("/images/icon_normal.png")); image img = closeimage.getimage(); image newimg = img.getscaledinstance(16, 16, java.awt.image.scale_smooth); imageicon closeicon = new imageicon(newimg); imageicon closeimagerollover = new imageicon( closetabbutton.class.getresource("/images/icon_roll.png")); image imgroll = closeimagerollover.getimage(); image newimgroll = imgroll.getscaledinstance(16, 16, java.awt.image.scale_smooth); imageicon closeiconroll = new imageicon(newimgroll); jbutton btclose = new jbutton(closeicon); btclose.setpreferredsize(new dimension(15, 15)); add(btclose); btclose.setopaque(false); btclose.setcontentareafilled(false); btclose.setborderpainted(false); btclose.setrollovericon(closeiconroll); btclose.addactionlistener(new actionlistener() { @override public void actionperformed(actionevent ae) { closetab(adetailpanel); } }); atabbedpane.settabcomponentat( atabbedpane.indexofcomponent(adetailpanel), this); } public jlabel gettitlelabel() { homecoming titlelabel; } } to add together keyboard shortcuts can add together them input map via
class="lang-java prettyprint-override">keystroke ctrlw = keystroke.getkeystroke(keyevent.vk_w, inputevent.ctrl_down_mask); getrootpane() .getinputmap(jcomponent.when_ancestor_of_focused_component) .put(ctrlw, disposeaction.getvalue(action.name)); disposeaction action calls closetab(…)
java eclipse swing jtabbedpane jinternalframe
Comments
Post a Comment