Sådan ændres udseende og følelse af swing-applikation
I denne tutorial skal vi se, hvordan du ændrer udseendet og følelsen af swing-applikationen. Java Swing giver os mulighed for at tilpasse den grafiske grænseflade ved at ændre udseendet og fornemmelsen (L&F). Look definerer det generelle udseende af komponenterne, og Feel definerer deres adfærd. L&F'er er underklasser af LookAndFeel-klassen, og hver L&F er identificeret med sit fulde klassenavn. Som standard er L&F indstillet til 'Metal'.
For at indstille L&F kan vi kalde metoden setLookAndFeel() af UIManager-klassen. Kaldet til setLookAndFeel skal foretages, før en Java Swing-klasse instansieres, ellers vil standard Swing L&F blive indlæst.
Java-applikation til at ændre udseende og følelse af swing-applikation:
import java.awt.*; import java.awt.event.*; import javax.swing.*; public class TestLF extends JFrame implements ActionListener { private JRadioButton w, ml, mf; private ButtonGroup groupBtn; public TestLF() { setTitle("Change the look of my Swing app"); w = new JRadioButton("Windows"); w.addActionListener(this); ml = new JRadioButton("Metal"); ml.addActionListener(this); mf = new JRadioButton("Motif"); mf.addActionListener(this); groupBtn = new ButtonGroup(); groupBtn.add(w); groupBtn.add(ml); groupBtn.add(mf); setLayout(new FlowLayout()); add(w); add(ml); add(mf); setSize(250, 250); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setVisible(true); setLocationRelativeTo(null); } @Override public void actionPerformed(ActionEvent actionevent) { String LookAndFeel; if(actionevent.getSource() == w) LookAndFeel = "com.sun.java.swing.plaf.windows.WindowsLookAndFeel"; else if(actionevent.getSource() == mf) LookAndFeel = "com.sun.java.swing.plaf.motif.MotifLookAndFeel"; else LookAndFeel = "javax.swing.plaf.metal.MetalLookAndFeel"; try { UIManager.setLookAndFeel(LookAndFeel); SwingUtilities.updateComponentTreeUI(this); } catch (Exception e) { System.out.println("Error while defining the LookAndFeel..." + e); } } public static void main(String args[]) { new TestLF(); } }
Output: