Wyglad w Swing

0

Mam programik

package paczka_1;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class R8_H_ZmianaWygladu342
{  
 public static void main(String[] args)
 {  
    RamkaWygladu ramka = new RamkaWygladu();
    ramka.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    ramka.show();
 }
}

/**
 Ramka, zawierająca panel przycisków, zmieniających wygląd programu
*/
class RamkaWygladu extends JFrame
{
 public RamkaWygladu()
 {
    setTitle("TestWygladu");
    setSize(SZEROKOSC, WYSOKOSC);

    // dołącz panel do ramki

    PanelWygladu panel = new PanelWygladu();
    Container powZawartosci = getContentPane();
  
    powZawartosci.add(panel);
 }

 public static final int SZEROKOSC = 300;
 public static final int WYSOKOSC = 200;  
}

/**
 Panel, zawierający przyciski, zmieniające wygląd programu
*/
class PanelWygladu extends JPanel
{  
 public PanelWygladu()
 {  
    zbudujPrzycisk("Metal","javax.swing.plaf.metal.MetalLookAndFeel");
    zbudujPrzycisk("Motif","com.sun.java.swing.plaf.motif.MotifLookAndFeel");
    zbudujPrzycisk("Windows","com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
    
    
    
    JButton przycisk = new JButton("Motif");
    add(przycisk);
    
    // wykonaj odpowiednie działanie

    przycisk.addActionListener(new 
       ActionListener()
       {
         public void actionPerformed(ActionEvent zdarzenie)
          {  
             // działanie przycisku: zmienia wygląd programu na nowy
             try
             {  
                UIManager.setLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel");
                SwingUtilities.updateComponentTreeUI
                   (PanelWygladu.this);
             }
             catch(Exception w) { w.printStackTrace(); }
          }
       });
    
    
    
    
    
    
 }

 /**
    Tworzy przycisk, zmieniający wygląd programu
  */
 void zbudujPrzycisk(String nazwa, final String nazwaWygladu)
 {  
    // dołącz przycisk do panelu

    JButton przycisk = new JButton(nazwa);
    add(przycisk);
    
    // wykonaj odpowiednie działanie

    przycisk.addActionListener(new 
       ActionListener()
       {
         public void actionPerformed(ActionEvent zdarzenie)
          {  
             // działanie przycisku: zmienia wygląd programu na nowy
             try
             {  
                UIManager.setLookAndFeel(nazwaWygladu);
                SwingUtilities.updateComponentTreeUI
                   (PanelWygladu.this);
             }
             catch(Exception w) { w.printStackTrace(); }
          }
       });
 }
}

jak zrobić by np wygląd Windows wczytywał się odraz po uruchomieniu ? czy musi być to akcja wywoływana na dzień dobry czy wystarczy to wczytać jakoś przez include ? i dodatkowo nasuwa mi się pytanie jeśli chodzi o wygląd jak zmienić wygląd JButton tak by w swing był on delikatniejszy ? lub też muc podmienić teks na guziku np z "+" na grafikę w zapisaną w png czy jpg przedstawiającą pluski ?

0

Wystarczy, że UIManager będzie konfigurowany przed pokazaniem ona programu. Czyli musisz gdzieś wrzucić kod z przycisku dla Windows jako domyślną konfigurację.

0

Jak odgrodzić cześć guzików JButton ramką od innych komponentów programu ? mam coś takiego zrobionego że tworzy mi ramkę wraz z nazwa ale ramka ta zajmuje cały JFrame nie wiem jak zrobić by zajmowała tylko np.: 1/4 JFrame i mieściła 9 JButton.

Mam coś takiego :

      setBorder(BorderFactory.createTitledBorder
	              (BorderFactory.createEtchedBorder(), "Kalkulator"));
	        setLayout(new BoxLayout(this, 
	           BoxLayout.Y_AXIS));
0

Użyj Manager Layoutu i ustaw Grid Layout. Następnie zgrupuj przyciski i otocz ramką po czym wrzuć w "komórkę" Grid Layoutu. I poczytaj tutorial ze strony suna oraz dokumentację :)

0

Dziękuje za odpowiedz sprawdzę to jak tylko wrócę do komputera. teraz idę spać ;) heheh jak mi się uda zamieszczę kod gotowego rozwiązania.

1 użytkowników online, w tym zalogowanych: 0, gości: 1