Zapomnel jsem uvest jednu dulezitou věc.

JPanelu, do ktereho JButton vkladam také definuji Background. A to je jadro pudla a problem, protože potom button.updateUI() nefunguje.

 

Zde uvadim kod:

****************************************************

package test;

 

import java.awt.Color;

import java.awt.Container;

import java.awt.FlowLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JPanel;

import javax.swing.plaf.metal.MetalButtonUI;

 

public class Main extends JFrame {

   

    private JButton button;

    private boolean prepnuti = false;

 

    public Main() {

        Container pane = this.getContentPane();

        JPanel panel = new JPanel();

        panel.setLayout(new FlowLayout());

        panel.setBackground(new Color(0,0,250));

        

        button = new JButton("Button");

        button.setUI(new MetalButtonUI());

        button.addActionListener(new ActionListener(){

            public void actionPerformed(ActionEvent e) {

                if (prepnuti) {

                    button.setBackground(new Color(255,0,0));

                    button.updateUI();

                    prepnuti = !prepnuti;

                } else {

                    button.setBackground(null);

                    button.updateUI();

                    prepnuti = !prepnuti;

                }

            }

        });

       

        panel.add(button);

        pane.add(panel);

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        pack();

        setVisible(true);

    }

 

    public static void main(String[] args) {

        new Main();

    }

}

****************************************************

 

 

 

 

 

Ahoj.

Co treba takto:

updateUI

<http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/JButton.html#updateUI%2

8%29> ()

Resets the UI property to a value from the current look and feel.

 

Vity

 

 

________________________________

 

From: konference-bounces na java.cz [mailto:konference-bounces na java.cz] On

Behalf Of Lukas Adamek | FAYN Telecommunications

Sent: Thursday, September 21, 2006 9:10 AM

To: konference na java.cz

Subject: JButton - navrat k puvodnimu UI

 

 

 

Ahoj

 

 

 

Potrebuji udelat blikajici

 

JButton activeButton;

 

 

 

Vzhled tlacitka nastavuji prikazem

 

activeButton.setUI(new MetalButtonUI());

 

 

 

Blikani delam jednoduse zmenou barvy pozadi, tj.

 

activeButton.setBackground(...);

 

 

 

Problem nastane, kdyz chci, aby tlacitko prestalo blikat. Tedy potrebuji

znovu nastavit vychozi UI. Nepomaha setBackground(null), znovupouziti setUI

a ani v prislusnem UI jsem nenasel zadnou funkci metodu, ktera by toho byla

schopna.

Odpovedet emailem