Avatar billede mercutio Nybegynder
18. december 2007 - 10:01 Der er 9 kommentarer

Samme button flere steder i gui

Hej Eksperter.

Jeg vil gerne have en button placeret både i top og bund af mit skærmbillede er der en måde jeg kan få den samme knap på skærmbilledet to steder? jeg vil helst ikke oprette to knapper der peger på samme kode når der klikkes for så skal jeg holde styr på at begge knapper bliver enabled og disabblet i stedet for kun den ene.

Mvh Merc.
Avatar billede di8leva Nybegynder
18. december 2007 - 10:52 #1
Det kan du ikke....hved jeg kender.

Men hvis du bruger JButton og ButtonModel så kan du bruge densamme "model" på to knapper, og så er det nok med at du disable:ar din model.
Avatar billede di8leva Nybegynder
18. december 2007 - 10:53 #2
Avatar billede mercutio Nybegynder
18. december 2007 - 12:45 #3
Hejsa.

Jeg skulle måske lige have fortalt jeg skal bruge det til gwt... og gwt understøtter ikke det de gør i eksemplet.

Merc.
Avatar billede mercutio Nybegynder
18. december 2007 - 12:45 #4
men tak for det hurtige svar.
Avatar billede _carsten Nybegynder
18. december 2007 - 13:13 #5
Så kan vel gøre det almindeligvis

public class ButtonWork extends javax.swing.JFrame {
    public ButtonWork() {
        initComponents();
        bund.setEnabled(false);
        setSize(300,200);
    }
   

    private void initComponents() {

        top = new javax.swing.JButton();
        bund = new javax.swing.JButton();
        label = new javax.swing.JLabel();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        top.setText("TOP");
        top.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                buttonWork(evt);
            }
        });
        getContentPane().add(top, java.awt.BorderLayout.NORTH);

        bund.setText("BUND");
        bund.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                buttonWork(evt);
            }
        });
        getContentPane().add(bund, java.awt.BorderLayout.PAGE_END);

        label.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        label.setText("Knappen \"TOP\" er enabled");
        getContentPane().add(label, java.awt.BorderLayout.CENTER);

        pack();
    }

    private void buttonWork(java.awt.event.ActionEvent evt) {
        if(evt.getActionCommand().equals("TOP")){
            top.setEnabled(false);
            bund.setEnabled(true);
            label.setText("Knappen \"TOP\" er disabled");
        }
        else{
            bund.setEnabled(false);
            top.setEnabled(true);
            label.setText("Knappen \"TOP\" er enabled");
        }
    }
   
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new ButtonWork().setVisible(true);
            }
        });
    }

    private javax.swing.JButton bund;
    private javax.swing.JLabel label;
    private javax.swing.JButton top;
}
Avatar billede mercutio Nybegynder
18. december 2007 - 13:20 #6
Hej Carsten.

Det var det jeg gerne ville undgu. Så får jeg flere instanser af hver knappe og skal så huske at sætte alle instanser til enabled eller disabled i stedet for kun den ene knap..

Jeg har løst det ved at lave en wrapper som jeg getter mine knapper fra. Når jeg så skal disable en knap disabler jeg wrapperen som så holder styr på hvilke knapper der skal disables.
Avatar billede mercutio Nybegynder
18. december 2007 - 13:21 #7
Således

public class ButtonWrapper {
   
    String buttonText;
    ClickListener clickListener;
   
    private List buttons = new ArrayList();
    public ButtonWrapper(String buttonText, ClickListener clickListener)
    {
        this.clickListener = clickListener;
        this.buttonText = buttonText;
    }
    public Button getButton()
    {
        Button button = new Button(buttonText);
        if(clickListener!=null)
        {
            button.addClickListener(clickListener);
        }
        buttons.add(button);
        return button;
    }
    public void setEnabled(boolean enabled){
        for (int i = 0; i < buttons.size(); i++) {
            ((Button)buttons.get(i)).setEnabled(enabled);
        }
    }
   
   
}
Avatar billede arne_v Ekspert
19. december 2007 - 03:05 #8
Du skulle nok have skrevet det med GWT med meget store bogstaver ...

:-)

AWT = standard fat client GUI
Swing = standard fat client GUI
SWT = Eclipse fat client GUI
GWT = compiles ikke til Java byte code men til JavaScript og puttes i en web app og udføres af browser
Avatar billede mercutio Nybegynder
19. december 2007 - 08:18 #9
Ja glemte lige at folk ikke umiddelbart ved hvad jeg tænker på :-)
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