Library tutorials & articles
Programming with Swing
GUI Look & Feel
Look And Feel is very important, it defines how components look and act (feel) . For instance, what you've been seeing when you have been putting components on a JPanel is the Java Look And Feel. The JButtons don't look normal, do they? Nope. Just like how Windows program looks different from a Java or Mac program, that's look and feel. A Java program typically can have one of the 5 or so possible LAFs(Look And Feels) :
- Use the current OS's Look and Feel.
- Use the Java (a.k.a Metal) Look and Feel.
- Use the Motif (UNIX) Look and Feel.
- Use the Windows LAF (only on windows).
- Use the Mac LAF (only on mac).
To set the look and feel BEFORE constructing any components, use the UIManager class. It contains the setLookAndFeel(String classname) method that (as shown) takes a string that is the class name of the LAF that you want to use for your program.
Here's the code to use the Motif LAF:
Try {
UIManager.setLookAndFeel("com.sun.java.swing.motif.MotifLookAndFeel");
}
catch(ClassNotFoundException e) {}
Here's the code to use the current OS's LAF:
Try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}
catch(ClassNotFoundException e) {}
The Windows LAF Class Name is com.sun.java.swing.windows.WindowsLookAndFeel
The Mac LAF Class Name is com.sun.java.swing.mac.MacLookAndFeel
The Java LAF Class Name is com.sun.java.swing.plaf.metal.MetalLookAndFeel
To use the Java LAF (even though it IS the default) use the method UIManager.getCrossPlatformLookAndFeelClassName()
That's it for Look and Feel. If you manage to find other LAFs on the web. They are used in the same way, just find out its class name!
Related articles
Related discussion
-
VB.NET: Hide and show table using radio buttons
by converter2009 (1 replies)
-
Java Script, File uploading on ftp server using java script code
by h_c_a_andersen (2 replies)
-
How to set value to the cloned object?
by fsloke (1 replies)
-
Create this kind of website
by maidentv (1 replies)
-
Binary Studio | software development outsourcing Ukraine
by shane124 (4 replies)
Related podcasts
-
Java Posse #213 - Newscast for Oct 23rd 2008
Newscast for Oct 23rd 2008 Fully formatted shownotes can always be found at http://javaposse.com The Android project has been released as open source, beating the rumored launch date for the source code by several months http://source.android.com/ And, Gizmodo and ZDNet both offer in-depth ...
Events coming up
-
Dec
15
Portland Java User Group
Portland, United States
This month's topic: TBD----------PJUG meetings start with eat+meet+greet time (pizza and beverages are provided), followed by the featured speaker, then some time for Q&A, discussion, and sometimes a drawing to give away swag. :)It is...
Hello,
')
I want to add a closing button to the internal frame. I am not able to do it. Plz help.javascript:smilie('
confused
Hi.
I have an ChildFrame inside of an DesktopFrame. I want to insert a JButton into the ChildFrame. But this JButton turns out to be very tiny in that child frame. If I maximize the child frame, the button does not change size.
I used this a source for my codings:
http://www.rz.fhtw-berlin.de/hjp3/k100230.html
I only added a JButton into my chid frame, I used a GridBagLayout. button.setSize() does not seem to work in that child frame.
Would be very thankful, if anybody could help.
Burkhardt
jho....
just call your child frames as follows
public class MainFrame extends JFrame
{
ChildFrame1 child1;
public MainFrame()
{
final JDesktopPane desktop = new JDesktopPane();
getContentPane().add(desktop);
JMenuBar bar = new JMenuBar();
JMenu show = new JMenu("Show");
JMenuItem showchild1 = new JMenuItem("Show Child1");
//*******
// here this represents the MainFrame which can be passes as a message to the child frame.
child1 = new ChildFrame1(this);
//*******
desktop.add(child1);
child1.setVisible(true);
bar.add(show);
show.add(showchild1);
}
}
and in ChildFrame set the constructor as
MainFrame mainFrame;
ChildFrame(MainFrame mainFrame)
{
this.mainFrame = mainFrame;
}
actionPerformed in ChildFrame1() {
if(button clicked) {
ChilFrame2 childFrame2 = new ChildFrame2();
mainFrame.desktop.add(childFrame2);
this.dispose(); // or this.hide();
}
}
hope this code helps!
i have a JFrame named MainFrame which also uses JDesktoPane. I created 2 JInternalFrame class named ChildFrame1 and ChildFrame2. When I can click the menu on the mainframe, it shows the childframe1. I must load the Childframe2 on the desktopPane on the mainFrame by clicking a button inside the childframe1. How can I do this??? My problem is that the desktopPane becomes foreign to childFrame2 since it is another class. here is the sample prog...
public class MainFrame extends JFrame
{
ChildFrame1 child1 = new ChildFrame1();
public MainFrame()
{
final JDesktopPane desktop = new JDesktopPane();
getContentPane().add(desktop);
JMenuBar bar = new JMenuBar();
JMenu show = new JMenu("Show");
JMenuItem showchild1 = new JMenuItem("Show Child1");
desktop.add(child1);
child1.setVisible(true);
bar.add(show);
show.add(showchild1);
}
}
i still have another JInternalFrame class named childFrame2 but it will only be visible when i click a button in childFrame1 (child1).
how can i do this?????
i cannot use the jDESKTOPANE "desktop" because that class does not recognize the "desktop"
PLEASE HELP ME!!! I WILL DEFINITELY APPRECIATE YOUR HELP! THANKS A LOT!!!
This thread is for discussions of Programming with Swing.