Avatar billede svarejoergen Nybegynder
05. september 2012 - 18:57 Der er 6 kommentarer og
1 løsning

Swing (ikke awt) setColor og højreclick

Laver en GUI i netbeans, hvor jeg bruger paletten og selv tilføjer kode. Vil holde det i Swing og undgå AWT (Et råd fra Arne V himself).

Det må meget gerne være muligt at skelne mellem højre-, venstre og midter-klik på diverse knapper, så forskellige ting kan ske. Her er det vel ikke en god ide at bruge:
MouseEvent.BUTTON3

Skal vel hellere bruge:

SwingUtilities.isRightMouseButton(MoseEvent e) som bruges i min mouseclicked event metode ?


Jeg skal også sætte en knap pink for at markere at det er dumt at vælge denne (skal dog være muligt). Bruger:

fold.setBackground(Color.pink);//knappen hedder fold

men dette er vel en AWT kommando?

Har kigget på setColor() fra Swing, men kan ikke få det til at fungere. Tror muligvis jeg mangler at importere noget.
Jeg har importeret:

import javax.swing.UIManager;

Dette er for at den kan sætte knappen tilbage til default via.

fold.setBackground(UIManager.getColor( "Button.background" ));

Bruger en del tid på java for tiden, så har en hel del spørgsmål. Gør mig dog rimelig umage for at undersøge det grundigt selv først. Håber nogen kan hjælpe :)
Avatar billede arne_v Ekspert
05. september 2012 - 20:50 #1
fold.setBackground(Color.pink);
fold.setForeground(Color.pink);

er OK.
Avatar billede arne_v Ekspert
05. september 2012 - 20:55 #2
De 2 metoder er Swing metoder.

Color er en AWT klasse, men den er OK at bruge i Swing.

Swing bygger nemlig paa AWT.

Swing komponenterne JLabel, JTextField, JTextArea etc. ender op som pixel drawing i AWT.

AWT Color virker fint til dette.

Det man ikke maa er at bruge AWT komponenterne Label, TextField, TextArea.

Men low level AWT kan og boer bruges i Swing.
Avatar billede svarejoergen Nybegynder
05. september 2012 - 23:40 #3
Mange tak Arne. Smid et svar.

Jeg fandt også ud af at bruge RGB systemet. Havde glemt "new" i:
fold.setBackground(new Color(254,190,190,56));

Går ud fra forskellen på foreground og background bare er et spørgsmål om prioritering. Det er i hvert fald foreground man ser når man indfører begge.

Et hurtigt multible-choice spørgsmål:
Hvilken af følgende to metoder er at foretrække, når man bruger høreklik?

metode 1:
if (SwingUtilities.isRightMouseButton(event))
  // do something

metode 2:
public class MyListener implements MouseListener
{
    // ... code ...

    public void mouseClicked(MouseEvent event)
    {
        if (event.getButton() == MouseButton.BUTTON3)
        {
            // Right-click happened
        }
    }
}


Igen mange tak for hjælpen :)
Avatar billede arne_v Ekspert
06. september 2012 - 00:12 #4
Jeg kendte slet ikke den foerste, saa jeg ville have lavet nummer 2.

Men det kan du jo ikke udlede saa meget af.
Avatar billede svarejoergen Nybegynder
06. september 2012 - 07:23 #5
takker. smid et svar :)
Avatar billede arne_v Ekspert
06. september 2012 - 14:54 #6
svar
Avatar billede arne_v Ekspert
06. september 2012 - 14:54 #7
Husk at du kan og formentlig boer aabne en context menu ved hoejreklik (det er hvad folk forventer).
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