How can i create responsive text with javafx? - java

I created a label with a number shown in it and I now want to make this number responsive to the GUI.
How can I do that? Here is my number with its current font-size.
Label label = new Label();
label.setText("12");
label.setFont(Font.font("Comic Sans MS", 35));
Thanks for your help :)

If you want change values or params of this label you must use one of avelible javaFx controls: https://docs.oracle.com/javafx/2/ui_controls/jfxpub-ui_controls.htm
For each control you have onActionListners functions where you can make changes.
Hope this help.

Anchorpane,HBOX etc. are responsive in nature.Put the label inside a HBOX.
Hope this help.

Related

Style label font size

I'm trying to make H3 label, at this point I use built-in Vaadin theme - ValoTheme.This is how i create new label:
Label label = new Label();
label.setCaption("myLabel");
label.setStyleName(ValoTheme.LABEL_H3);
But for some reason, label keeps unstyled.
The question is - how i could stylish Label without using CSS?
Thanks
P.S UI class has been annotated with #Theme(ValoTheme.THEME_NAME)
Update: Making primary button with ValoTheme styling as described above, everything works perfectly.
It took for a while to investigate and found solution that fits me best. The issue has been related to 'label.setCaption(caption);' method, which set components caption, but it denied object customizations.
Thanks to #André Schild for suggestion. So i tested these two small solutions and they worked fine:
Label label = new Label(caption);
label.setStyleName(ValoTheme.LABEL_H3);
and
Label label = new Label(caption);
label.addStyleName(ValoTheme.LABEL_H3);
I hope it helps someone

Need to add text to JFrame

So I'm trying to create this really basic calculator that can calculate volume and area. I already have formulas and everything worked out, I just need to get the actual window and text to work. My code just to create the window is here:
JFrame myCalc = new JFrame("Area/Volume Calculator");
JTextField input;
myCalc.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
myCalc.setSize(400, 500);
myCalc.setVisible(true);
JLabel welcome = new JLabel("");
welcome.setText("Please choose which shape's area/volume you would like to calculate.");
All I need to know is why the JLabel "welcome" isn't actually showing up in the window. The actual window does appear, with the correct title, but there is no text. Keep in mind that I am a beginner at Java and am really only beginning to use Swing.
Thank you!
P.S. I also have no idea how to use the text editor. I understand that the code is badly formatted and that it appears to be missing a class and main method, but it wouldn't let me copy/paste that in.
You will need to add welcome to myCalc.
Try this:
JLabel welcome = new JLabel("Please choose which shape's area/volume you would like to calculate.");
myCalc.add(welcome);
myCalc.pack();
myCalc.setVisible(true);
1. Put this to the end of the your code. Now you will just have to style components in JFrame.
myCalc.setSize(400, 500); //or just myCalc.pack();
myCalc.getContentPane().add(input);
myCalc.getContentPane().add(welcome);
myCalc.setVisible(true);
2. Here you can find some examples, which will help you get stared with java swing. Here is the link:https://docs.oracle.com/javase/tutorial/uiswing/examples/components/

suggestions on designing a JFrame

I am designing a Jframe using netbeans. I do have few questions.
Can we create a label for a field in a desired location(For eg.,we have a field named height, I need to display a label below it indicating height is in cm) conditionally?
Can we disable a field based on a condition?(by disable I mean it shouldn't be displayed in my frame)
Can someone suggest me whether we can achieve them through some examples.
Tried this, after some helpful suggestions
private void englishRadioButtonActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
JLabel userlabel;
if (englishRadioButton.isSelected())
{
userlabel = new JLabel("Inches");
userlabel.setBounds(311, 59, 64, 36);
//userlabel.setLocation(307,55);
//userlabel.setSize(70,40);
userlabel.setForeground(Color.green);
userlabel.setText("Inches");
userlabel.setVisible(true);
System.out.println(englishRadioButton.getBounds());
inchesTextField.setVisible(true);
}
}
The textfield is visible only when I click the English radio button,at the same time I need to get a label but it's not displayed with the above code. Can I know where I am going wrong?
Please see the attached screenshots
When English button is clicked, I need a label beneath the second textfield as inches, I am disabling the text field when Metric is displayed. I am able to achieve the later one but not the former one
Thanks!!
Yes, relative placement of components is easily achieved with use of layout managers.
Yes, all components have a setEnabled(...) and a setVisible(...) method either of which can be called at any time during a program's run. The former helps you activate/inactivate components and the latter helps make them visible/invisible. If you want to swap complete "views", use a CardLayout.
Regarding:
Can someone suggest me whether we can achieve them through some examples.
Please, you first as I strongly believe that the onus of effort here should be yours, the questioner's, since you're the one asking the questions, and the one with the most to learn by coding as much as possible. Let's see your attempts and we can help you with them. Otherwise the best examples are to be found at the Swing Tutorials.
For links, please look here: Swing Tag Info.
Edit
You ask:
I tried the above posted code,conditionally disabling the text field works well but getting a label doesn't work. Can you please suggest on that?
I don't see you adding your JLabel to any component. If you are going to create a component on an event, you must add it to a component whose ancestor hierarchy eventually reaches a visible top-level component such as a JFrame. Then after adding a component to a container (say a JFrame), you must call revalidate() on the container to have its layout managers re-layout its components, and then repaint() to repaint any "dirty" pixels.
I again will re-iterate that you're far better off not using null layout and absolute positioning, but rather using layout managers and relative positioning. If you want a label with and without visible text, it's often best to add an empty JLabel to the GUI on GUI creation, and just set its text when needed, as long as the label is located somewhere that allows its text to shrink and expand.
Also, as to your current problem, you might wish to show a picture of what you're trying to achieve, and what you're getting. Or if you can't post a picture here yet, post a link to an image or images you've created, and then we'll post it for you.

jTextfield display problem in java

I have made a frame in which i have put two jTextfield boxes where the user can see the path of the loaded file. Problem is that if the path is too long , the textfield expands to accomodate the full path which again leads to display problems. I would like to keep the textfield's length constant and instead , display the full path of file as a tooltip instead.
How can this be done?
Code for layout manager of jinternal Frame:
javax.swing.GroupLayout jInternalFrame1Layout = new javax.swing.GroupLayout(jInternalFrame1.getContentPane());
jInternalFrame1.getContentPane().setLayout(jInternalFrame1Layout);
I never use an IDE so I don't know how the GroupLayout works.
But when using the other layout managers I always use:
JTextField textField = new JTextField(10); // or whatever size your want
This will give the text field a preferred size and the layout manager can use that information when laying out the component.
Code the GUI by hand instead. You will avoid problems like this and it will be much easier to make changes to your code.
you need to choose a layout manager to manage the proportions of your JComponents.
Try to put your textfiels on a JPanel so you can select a layout useful for you
Later you can use JTextField. setToolTip("full path") to set a tool tip
I solved my problem:
Anybody having the same problem can set the Property Columns using Netbeans. The default is 0, so the textfield cannot accomodate the full text. Use some value like 3 to achieve it.

JSeparator with Title

How do I create a horizontal JSeparator with a title label in Java Swing?
Something like this:
--- Title XYZ --------------------
I found a solution: SwingX JXTitledSeparator. We already use SwingX in our project. I didn't know that SwingX provides a titled separator.
#Bombe Thank you for your help.
Hmm… without any testing and completely from the top of my head:
JPanel panel = new JPanel();
panel.setBorder(new TitledBorder("Title"));
menu.add(panel);
Most Swing containers eat anything so that might even work.
Another approach would be to create a custom component (maybe with a horizontal BoxLayout) and add a JSeparator, a JLabel, and another JSeparator to it, then add it to the menu.

Categories

Resources