Wątek przeniesiony 2015-06-24 18:05 z Java przez bogdans.

JButton kliknięty tylko raz

0

Witam, mam taki problem potrzebuje aby przycisk mógł zostać kliknięty tylko raz, tzn. jeżeli login i hasło są poprawne to przycisk zaloguj można kliknąć tylko raz, natomiast gdy zły to dopóki nie zaloguje się poprawnie. Głównie chodzi o to żeby można było tylko raz przycisnąć JButtona.

1

No to w czym problem ? jesli dane poprawne chowaj buttona, ewentualnie dezaktywuj , odpinaj sluchacza co kto woli

0

już w niczym, przycisk został schowany :)

0

Znalazłem chwilkę czasu by stworzyć jakiś przykładowy kod, który pozwoli zrozumieć zasadę działania :

  1. Schowanie dezorganizuje widok - w zależności od layoutu
  2. Pamiętaj, że jakiekolwiek zmiany w elementach widoku powinny być wykonywane w tym samym wątku
package button;

import java.awt.BorderLayout;
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.JTextField;

public class Button extends JFrame implements ActionListener {

    private int increment;
    private JButton loginButton;
    private JButton hideButton;
    private JButton disableButton;
    private JButton unmountButton;
    private JTextField text;

    public Button() {
        init();
    }

    private void init() {

        JPanel topPanel = new JPanel();
        JPanel bottomPanel = new JPanel();
        text = new JTextField(8);

        loginButton = createButton("Login");
        hideButton = createButton("Hide");
        disableButton = createButton("Disable");
        unmountButton = createButton("Unmount");

        topPanel.add(loginButton);
        topPanel.add(text);
        bottomPanel.add(hideButton);
        bottomPanel.add(disableButton);
        bottomPanel.add(unmountButton);

        setLayout(new BorderLayout());
        setLocationRelativeTo(null);
        add(topPanel, BorderLayout.NORTH);
        add(bottomPanel, BorderLayout.SOUTH);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setTitle("Button");
        setSize(300, 150);
        setVisible(true);
    }

    private JButton createButton(String name) {
        JButton temp = new JButton(name);
        add(temp);
        temp.addActionListener(this);
        return temp;
    }

    public static void main(String[] args) {
        new Button();
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        if (e.getSource().equals(loginButton)) {
            text.setText("Loguje " + ++increment);
        } else if (e.getSource().equals(hideButton)) {

            if (hideButton.getText().equals("Hide")) {
                changeButton(hideButton, "Unhide", false);
            } else {
                changeButton(hideButton, "Hide", true);
            }

        } else if (e.getSource().equals(disableButton)) {
            if (disableButton.getText().equals("Disable")) {
                changeButton(disableButton, "Enable", false);
            } else {
                changeButton(disableButton, "Disable", true);
            }
        } else if (e.getSource().equals(unmountButton)) {
            if (unmountButton.getText().equals("Unmount")) {
                changeButton(unmountButton, "Mont", false);
            } else {
                changeButton(unmountButton, "Unmount", true);
            }
        }
    }

    private void changeButton(JButton button, String name, boolean value) {
        if (button.equals(hideButton))
            loginButton.setVisible(value);
        else if (button.equals(disableButton)) {
            loginButton.setEnabled(value);

        } else if (button.equals(unmountButton)) {
            if (!value) {
                loginButton.removeActionListener(this);
                text.setText("Odpięty");
            } else
                loginButton.addActionListener(this);
        }
        button.setText(name);
    }

}

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