java - JSpinner's JButton to ImageIcon -
trying replace jbutton controller of jspinner imageicon instead. reason not listen mouseclicks(installbuttonlisteners() in basicspinnerui seems add mouselistener). ideas why , how fix?
public class spinnericonbtn extends jframe { public spinnericonbtn(){ jspinner spinner = new jspinner(); spinner.setui(new jspinnerarrow()); this.add(spinner); this.pack(); this.setvisible(true); } class jspinnerarrow extends basicspinnerui { @override protected component createnextbutton() { component c = createarrowbutton(swingconstants.north); c.setname("spinner.nextbutton"); installnextbuttonlisteners(c); return c; } @override protected component createpreviousbutton() { component c = createarrowbutton(swingconstants.south); c.setname("spinner.previousbutton"); installpreviousbuttonlisteners(c); return c; } private component createarrowbutton(int direction) { string path = "/users/tst.png"; jlabel icon = new jlabel(new imageicon(path)); return icon; } } public static void main(string[] args) { new spinnericonbtn(); } }
do not change icon, use painticon()
change layoutmanager if arrowsbuttons moved of icons big
.
import javax.swing.*; import java.awt.event.*; import java.awt.*; class testing { //int counter = 0;//proper setting int counter = 7195;//testing hours 'tick over' correctly jspinner spinner = new jspinner(); jtextfield editor = ((jspinner.defaulteditor) spinner.geteditor()).gettextfield(); java.text.decimalformat df = new java.text.decimalformat("00"); public void buildgui() { spinner.setui(new endlesshoursui()); jframe f = new jframe(); f.getcontentpane().add(spinner); f.pack(); f.setlocationrelativeto(null); f.setdefaultcloseoperation(jframe.exit_on_close); f.setvisible(true); } class endlesshoursui extends javax.swing.plaf.basic.basicspinnerui { public endlesshoursui() { settime(); } @override protected void installnextbuttonlisteners(component c) { }// nothing @override protected void installpreviousbuttonlisteners(component c) { }// nothing @override protected component createnextbutton() { jbutton btnnext = (jbutton) super.createnextbutton(); btnnext.addactionlistener(new actionlistener() { @override public void actionperformed(actionevent ae) { changespinner(1); } }); return btnnext; } @override protected component createpreviousbutton() { jbutton btnprevious = (jbutton) super.createpreviousbutton(); btnprevious.addactionlistener(new actionlistener() { @override public void actionperformed(actionevent ae) { changespinner(-1); } }); return btnprevious; } } public void changespinner(int amount) { if (counter > 0 || amount > 0) { counter += amount; settime(); } } public void settime() { int hours = counter / 3600; int mins = (counter / 60) % 60; int secs = counter % 60; string time = df.format(hours) + ":" + df.format(mins) + ":" + df.format(secs); editor.settext(time); } public static void main(string[] args) { swingutilities.invokelater(new runnable() { @override public void run() { new testing().buildgui(); } }); } }
Comments
Post a Comment