Avatar billede dennism Nybegynder
18. november 2006 - 21:06 Der er 17 kommentarer og
1 løsning

Java: anderledes Swing

Synes at have læst et sted, at man kan få en form for extension så end swing-komponenter ændrer udseende? Er det korrekt? I så fald, hvor kan man få fat i sådan nogle?

Beklager, men har ingen point.
Avatar billede arne_v Ekspert
18. november 2006 - 21:26 #1
jeg tror at du tænker på look and feel
Avatar billede arne_v Ekspert
18. november 2006 - 21:27 #2
for at teste de indbyggede så prøv:

import java.awt.*;
import java.awt.event.*;

import javax.swing.*;

public class MultiLookAndFeel extends JFrame implements ActionListener {
  private JButton windows = new JButton("Windows");
  private JButton motif = new JButton("Motif");
  private JButton metal1 = new JButton("Metal/ocean");
  private JButton metal2 = new JButton("Metal/steel");
  private JButton gtk = new JButton("GTK");
  private JButton java = new JButton("Java");
  private JButton system = new JButton("System");
  public MultiLookAndFeel() {
      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      getContentPane().setLayout(new GridLayout(7, 1));
      windows.addActionListener(this);
      getContentPane().add(windows);
      motif.addActionListener(this);
      getContentPane().add(motif);
      metal1.addActionListener(this);
      getContentPane().add(metal1);
      metal2.addActionListener(this);
      getContentPane().add(metal2);
      gtk.addActionListener(this);
      getContentPane().add(gtk);
      java.addActionListener(this);
      getContentPane().add(java);
      system.addActionListener(this);
      getContentPane().add(system);
      pack();
  }
  public void actionPerformed(ActionEvent e) {
      try {
        if(e.getSource() == windows) {
            UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
        } else if(e.getSource() == motif) {
            UIManager.setLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel");
        } else if(e.getSource() == metal1) {
            javax.swing.plaf.metal.MetalLookAndFeel.setCurrentTheme(new javax.swing.plaf.metal.OceanTheme());
            UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
        } else if(e.getSource() == metal2) {
            javax.swing.plaf.metal.MetalLookAndFeel.setCurrentTheme(new javax.swing.plaf.metal.DefaultMetalTheme());
            UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
        } else if(e.getSource() == gtk) {
            UIManager.setLookAndFeel("com.sun.java.swing.plaf.gtk.GTKLookAndFeel");
        } else if(e.getSource() == java) {
            UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
        } else if(e.getSource() == system) {
            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
        }
      } catch (ClassNotFoundException e1) {
        e1.printStackTrace();
      } catch (InstantiationException e1) {
        e1.printStackTrace();
      } catch (IllegalAccessException e1) {
        e1.printStackTrace();
      } catch (UnsupportedLookAndFeelException e1) {
        e1.printStackTrace();
      }
      SwingUtilities.updateComponentTreeUI(this);
      pack();
  }
  public static void main(String[] args) {
      MultiLookAndFeel f = new MultiLookAndFeel();
      f.setVisible(true);
  }
}
Avatar billede arne_v Ekspert
18. november 2006 - 21:30 #3
du kan også godt finde eksterne look and feel

se f.eks.

http://www.javootoo.com/
Avatar billede dennism Nybegynder
18. november 2006 - 23:35 #4
Hvordan installerer man eksterne look and feel?
Avatar billede arne_v Ekspert
18. november 2006 - 23:43 #5
du anbringer jar fil i classpath og kalder UIManager.setLookAndFeel
Avatar billede dennism Nybegynder
19. november 2006 - 21:58 #6
Jeg har downloadet en .jar-fil som skulle være look&feel. Ved du, hvor på SuSE Linux mit java classpath er?
Hvad skal jeg køre setLookAndFeel metoden med?
Avatar billede arne_v Ekspert
19. november 2006 - 22:24 #7
det nemmeste er vel hvis du starter din app med eksplicit classpath:

java -classpath foobar.jar:andet.jar Program

hvis du udvikler i Eclipse eller NetBeans kan du nemt tilføje en jar til classpath i dem
Avatar billede arne_v Ekspert
19. november 2006 - 22:25 #8
du kalder bare UIManager.setLookAndFeel tidligt i dit program
Avatar billede dennism Nybegynder
20. november 2006 - 07:55 #9
Fint, jeg har i Library Manager i netBeans lagt et nyt library ind i classpath - jeg har kaldt det ilf-gpl.

Jeg forsøger derefter:
UIManager.setLookAndFeel("ilf-gpl");

Men det er måske forkert?
Avatar billede arne_v Ekspert
21. november 2006 - 00:52 #10
du skal halde med et navn på en klasse

navnet bør frmegå af dokumentationen
Avatar billede dennism Nybegynder
21. november 2006 - 09:14 #11
Af dokumentationen fremgår det, at jeg skal køre det sådan:
UIManager.setLookAndFeel(new InfoNodeLookAndFeel());

Min kompiler melder bare tilbage, at denne klasse ikke findes. Kan du sige hvad der er galt? Hvordan sikrer jeg mig, at jar-filen er tilføjet korrekt?
Avatar billede arne_v Ekspert
21. november 2006 - 12:59 #12
jeg tror at du mangler en import !
Avatar billede dennism Nybegynder
21. november 2006 - 15:07 #13
Og hvad er det der skal importeres? :(
Avatar billede dennism Nybegynder
21. november 2006 - 15:10 #14
Har bl.a. prøvet:
import net.infonode.gui.laf;
Avatar billede dennism Nybegynder
22. november 2006 - 10:54 #15
Sådan, så lykkedes det mig at få det til at virke!
Hvilke look&feel synes du er pæne? De jeg har fået fat I, er ikke særlig smarte :)
Avatar billede dennism Nybegynder
22. november 2006 - 11:07 #16
Jeg har fundet dette, som jeg gerne vil have op at køre:
http://www.jgoodies.com/

Men hvilke filer mm. skal jeg hente?
Avatar billede arne_v Ekspert
24. november 2006 - 02:14 #17
Avatar billede dennism Nybegynder
24. november 2006 - 08:48 #18
Tak for hjælpen her!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester