I am making a new form using JavaFX. I need a Pop up text field within the form to add new category -
adding new category within same window
i making new form using javafx add new item inventory, if need add new category item form, must able within frame popping new text field shown in red box. there way same in javafx?
two different approaches. use textfield , seteditable(false). make textfield's seteditable(true) after double-click on textfeild. first half of code shows approach. option use label. when label double-clicked, hide label , show textfield or textarea. type data 1 of these nodes , when enter pressed, remove textfield or textarea , show text in label. second half of code show approach.
import javafx.application.application; import javafx.event.eventhandler; import javafx.scene.scene; import javafx.scene.control.label; import javafx.scene.control.radiobutton; import javafx.scene.control.textarea; import javafx.scene.control.textfield; import javafx.scene.input.mousebutton; import javafx.scene.input.mouseevent; import javafx.scene.layout.hbox; import javafx.scene.layout.priority; import javafx.scene.layout.stackpane; import javafx.scene.layout.vbox; import javafx.stage.stage; /** * * @author blj0011 */ public class javafxapplication7 extends application { @override public void start(stage primarystage) { vbox root = new vbox(); stackpane stackpane = new stackpane(); textfield textfield = new textfield("text"); textfield.seteditable(false);//set editiable false textfield.setonmouseclicked(new eventhandler<mouseevent>() { @override public void handle(mouseevent mouseevent) { if(mouseevent.getbutton().equals(mousebutton.primary)){ if(mouseevent.getclickcount() == 2){ textfield.seteditable(true);//on double click set editable true textfield.setonkeypressed(event ->{ if(event.getcode().tostring().equals("enter")) { textfield.seteditable(false);//on enter set editable false } }); } } } }); label label = new label("test"); vbox.setvgrow(label, priority.always); label.wraptextproperty().set(true); label.setonmouseclicked(new eventhandler<mouseevent>() { @override public void handle(mouseevent mouseevent) { if(mouseevent.getbutton().equals(mousebutton.primary)){ if(mouseevent.getclickcount() == 2){ label.setvisible(false); textarea textarea = new textarea(label.gettext()); textarea.setprefheight(label.getheight() + 10); stackpane.getchildren().add(textarea); textarea.setonkeypressed(event ->{ system.out.println(event.getcode()); if(event.getcode().tostring().equals("enter")) { label.settext(textarea.gettext()); stackpane.getchildren().remove(textarea); label.setvisible(true); } }); } } } }); stackpane.getchildren().add(label); root.getchildren().add(textfield); root.getchildren().add(stackpane); scene scene = new scene(root, 300, 250); primarystage.settitle("hello world!"); primarystage.setscene(scene); primarystage.show(); } /** * @param args command line arguments */ public static void main(string[] args) { launch(args); } }
Comments
Post a Comment