Guziki w apletach

0

Witam,

Jestem początkującym programistą, od niedawna programuję aplet w javie.
Czy można zmienić kolor guzika po najechaniu na niego kursorem myszy ?
Czy można zmienić kolor guzika w momencie gdy guzik jest wciśnięty?
Proszę nie piszcie, żebym użył JFrame itd. **muszę ** zrobić to w aplecie.

 import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
public class Guzik extends Applet implements ActionListener{
    Button przycisk;
    
    public void init(){
        przycisk = new Button("1");
        add(przycisk);
        przycisk.addActionListener(this);
    }
    
    public void paint(Graphics g){
        przycisk.setBounds(30,80,40,25);
        przycisk.setBackground(Color.blue);
    }
    //kolor zmienia kolor, ale nie wraca do poprzedniego
    public void actionPerformed(ActionEvent zdarzenie){
        if(zdarzenie.getSource()==przycisk){
            przycisk.setBackground(Color.red);
        }
    }
    // probowalem tez tego...
    protected void processActionEvent(ActionEvent evt){
        if(evt.getSource()==przycisk)
        {
            przycisk.setBackground(Color.white);
        }
    }
}

0

jak zmienisz mu kolor musisz w jakimś określonym momencie pomalować go z powrotem na domyślny kolor. np. kontrolując focusa buttona

0

Czy mógłbyś proszę podać przykład jak to zrobić z tym focusem ?

0

zacznij od oprogramowania interfejsu MouseListener i tam masz pięć metod.

 //metoda wywoływana, gdy następuje kliknięcie, czyli wciśnięcie i zwolnienie przycisku myszy, ale uwaga, obie te operacje muszą zajść w jednym położeniu.
public void mouseClicked(MouseEvent event)
 
//metoda wywoływana, gdy zostaje wciśnięty przycisk myszy\
public void mousePressed(MouseEvent event)
 
//metoda wywoływana, gdy następuje zwolnienie przycisku myszy
public void mouseReleased(MouseEvent event)
 
//metoda wywoływana, gdy kursor pojawia się w obszarze nasłuchującym na zdarzenia, na przykład panelu
public void mouseEntered(MouseEvent event)
 
//metoda wywoływana, gdy kursor opuszcza obszar nasłuchujący zdarzenia
public void mouseExited(MouseEvent event)

edit.
przeczytałem jeszcze raz Twój problem i nie musisz moim zdaniem kontrolować focusa. Bo masz zmieniać kolor po najechaniu myszki a nie kliknięciu np.

0

Dziękuję Ci bardzo.

Jeszcze jedno pytanie.
Czym różni się stworzenie guzika w taki sposób:

 JButton button = new JButton();

Od tego:

 Button b0 = new Button("0");
0

Nic się nie dzieje ...

 import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
public class Guzik extends Applet implements ActionListener,MouseListener{
    Button przycisk;
    
    public void init(){
        przycisk = new Button("1");
        add(przycisk);
        przycisk.addActionListener(this);
    }
    
    public void paint(Graphics g){
        przycisk.setBounds(30,80,40,25);
        przycisk.setBackground(Color.blue);
    }
    
    public void mouseClicked(MouseEvent event){}
    public void mousePressed(MouseEvent event){}
    public void mouseReleased(MouseEvent event){}
    public void mouseEntered(MouseEvent event){
        if(event.getSource()==przycisk){
            przycisk.setBackground(Color.red);
        }
    }
    public void mouseExited(MouseEvent event){}
    
    public void actionPerformed(ActionEvent zdarzenie){
       
    }
}

0

najlepiej jest implementować interfejsy w danej kontrolce a nie na całej ramce

 package aplety;

import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
public class Guzik extends Applet implements ActionListener{
    Button przycisk;

    public void init(){
        przycisk = new Button("1");
        add(przycisk);

        przycisk.addMouseListener(new MouseListener() {
            @Override
            public void mouseClicked(MouseEvent e) {

            }

            @Override
            public void mousePressed(MouseEvent e) {

            }

            @Override
            public void mouseReleased(MouseEvent e) {

            }

            @Override
            public void mouseEntered(MouseEvent e) {
                przycisk.setBackground(Color.blue);
            }

            @Override
            public void mouseExited(MouseEvent e) {
                przycisk.setBackground(Color.red);
            }
        });

        przycisk.addActionListener(this);
    }

    public void paint(Graphics g){
        przycisk.setBounds(30,80,40,25);
    }


    public void actionPerformed(ActionEvent zdarzenie){

    }
}

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