10

So I am designing a JFrame using Eclipse WindowBuilder. This specific frame is an error message stating that the user provided invalid credentials. I have added a button to exit the frame and I now need to display the actual error message "The login credentials specified are invalid. Please provide valid credentials."

I have done some searching and everyone says to use a JLabel, but when I create my JLabel and enter the text to it, there is no wordwrap or anything so I can't fit the label inside my frame.

What is an easy way to simply display a message in the center of the JFrame?

Bhavik Ambani
  • 6,557
  • 14
  • 55
  • 86
thaweatherman
  • 1,467
  • 4
  • 20
  • 32

6 Answers6

12

To create a label for text:

JLabel label1 = new JLabel("Test");

To change the text in the label:

label1.setText("Label Text");

And finally to clear the label:

label1.setText("");

And all you have to do is place the label in your layout, or whatever layout system you are using, and then just add it to the JFrame...

Peter Mortensen
  • 30,738
  • 21
  • 105
  • 131
Bhavik Ambani
  • 6,557
  • 14
  • 55
  • 86
  • 1
    Thanks for the quick response. I knew this, but in WindowBuilder I'm having trouble getting the whole label to fit within my frame. It is displaying it all on one line, which is quite a bit longer than my actual frame. How can I fit the text within the scope of the frame? – thaweatherman Dec 01 '12 at 18:58
  • 1
    try a JTextArea and add \n where you need a linewrap – schippi Dec 01 '12 at 19:05
  • 1
    GAH SO MANY DOWNVOTES. tried the jtextarea. that worked great thanks! – thaweatherman Dec 01 '12 at 19:12
4

Instead of wasting your time to design a JFrame just to display a error message, you can use an JOptionPane which is by default modal:

import javax.swing.JOptionPane;

public class Main {

    public static void main(String[] args) {
        JOptionPane.showMessageDialog(null, "Your message goes here!","Message", JOptionPane.ERROR_MESSAGE);
    }
}

enter image description here

P.S. Stop using Windowbuilder if you want to learn Swing.

Branislav Lazic
  • 14,388
  • 8
  • 60
  • 85
3

when I create my JLabel and enter the text to it, there is no wordwrap or anything

HTML formatting can be used to cause word wrap in any Swing component that offers styled text. E.G. as demonstrated in this answer.

Community
  • 1
  • 1
Andrew Thompson
  • 168,117
  • 40
  • 217
  • 433
1

The easiest way to add a text to a JFrame:

JFrame window = new JFrame("JFrame with text"); 
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setLayout(new BorderLayout());
window.add(new JLabel("Hello World"), BorderLayout.CENTER);
window.pack();
window.setVisible(true);
window.setLocationRelativeTo(null);
Johnny
  • 14,397
  • 15
  • 77
  • 118
0

You can add a multi-line label with the following:

JLabel label = new JLabel("My label");

label.setText("<html>This is a<br>multline label!<br> Try it yourself!</html>");

From here, simply add the label to the frame using the add() method, and you're all set!

bohlmanc
  • 1
  • 2
0
            JOptionPane.showMessageDialog(null,"Welcome To my Game",al,JOptionPane.WARNING_MESSAGE);

Works well

USER289
  • 1
  • 1
  • 1
    Your answer could be improved with additional supporting information. Please [edit] to add further details, such as citations or documentation, so that others can confirm that your answer is correct. You can find more information on how to write good answers [in the help center](/help/how-to-answer). – Community Jan 15 '23 at 10:05