Hi, Khách!
![]() | ![]() ![]() ![]() ![]() |
Bài 19 - LookAndFeel (cảm quan giao diện)
LookAndFeel (viết tắt là LaF gọi là cảm quan giao diện cho ứng dụng. Sử dụng rất đơn giản
UIManager.setLookAndFeel(String className) với UIManager là một class còn className là tên class chứa cái LaF đó. Java hỗ trợ sẵn 3 cái là:
javax.swing.plaf.metal.MetalLookAndFeel (giao diện Java)
com.sun.java.swing.plaf.windows.WindowsLookAndFeel (giao diện Windows)
com.sun.java.swing.plaf.motif.MotifLookAndFeel (giao diện UNIX)
Sau khi set, để giao diện hiển thị trên JFrame nào, cần cập nhật trên JFrame đó bằng phương thức sau
SwingUtilities.updateComponentTreeUI(myFrame) (myFrame là tên JFrame cần cập nhật)
Ví dụ sau sẽ minh họa cách thay đổi LaF dựa vào CheckboxGroup. Cần nói thêm là phương thức UIManager.setLookAndFeel(String className) bắt buộc phải xử lí ngoại lệ
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class Core
{
public static void main(String args[)
{
final JFrame f = new JFrame("My JFrame");
final String[ a={"Metal","Windows","Motif"};
final Checkbox[ b=new Checkbox[a.length;
final String[ c=new String[a.length;
CheckboxGroup g=new CheckboxGroup();
c[0="javax.swing.plaf.metal.MetalLookAndFeel";
c[1="com.sun.java.swing.plaf.windows.WindowsLookAndFeel";
c[2="com.sun.java.swing.plaf.motif.MotifLookAndFeel";
Panel p=new Panel();
f.add(p);
for(int i=0;i<a.length;i++)
{
b[i=new Checkbox(a[i,g,false);
p.add(b[i);
b[i.addItemListener(new ItemListener()
{
public void itemStateChanged(ItemEvent e)
{
for(int j=0;j<a.length;j++)
{
if(e.getSource()==b[j)
{
try
{
UIManager.setLookAndFeel(c[j);
}
catch(Exception exception)
{
System.out.println("LaF not found");
}
SwingUtilities.updateComponentTreeUI(f);
}
}
}
});
}
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
}
Copy code
import java.awt.*;
import java.awt.event.*;
class Core
{
public static void main(String args[)
{
final JFrame f = new JFrame("My JFrame");
final String[ a={"Metal","Windows","Motif"};
final Checkbox[ b=new Checkbox[a.length;
final String[ c=new String[a.length;
CheckboxGroup g=new CheckboxGroup();
c[0="javax.swing.plaf.metal.MetalLookAndFeel";
c[1="com.sun.java.swing.plaf.windows.WindowsLookAndFeel";
c[2="com.sun.java.swing.plaf.motif.MotifLookAndFeel";
Panel p=new Panel();
f.add(p);
for(int i=0;i<a.length;i++)
{
b[i=new Checkbox(a[i,g,false);
p.add(b[i);
b[i.addItemListener(new ItemListener()
{
public void itemStateChanged(ItemEvent e)
{
for(int j=0;j<a.length;j++)
{
if(e.getSource()==b[j)
{
try
{
UIManager.setLookAndFeel(c[j);
}
catch(Exception exception)
{
System.out.println("LaF not found");
}
SwingUtilities.updateComponentTreeUI(f);
}
}
}
});
}
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
}
Copy code

Trực Tuyến:
Khách: 1