Java свинг JButton, не отвечает - PullRequest
0 голосов
/ 23 октября 2018

первый таймер здесь.

Я пытаюсь использовать свинг в первый раз.Мои кнопки ничего не делают при нажатии.Я не мог найти ошибку.У меня есть 2 кнопки, одна - Добавить, другая - Очистить.Добавить добавит текст в текстовые поля в файл позже, и очистить очистит все текстовые поля.Но кнопки не отвечают.Я не вижу предупреждающее сообщение «Пожалуйста, заполните все поля!»или "Успешно добавлено"

Вот мой код:

public class CustomerList {

    private JFrame frame;
    private JTextField txtCompanyName;
    private JTextField txtSector;
    private JTextField txtCity;
    private JTextField txtAddress;
    private JTextField txtNotes;
    private JButton btnAdd;

    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    CustomerList window = new CustomerList();
                    window.frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the application.
     */
    public CustomerList() {
        initialize();
    }

    /**
     * Initialize the contents of the frame.
     */
    private void initialize() {
        frame = new JFrame();
        frame.setBounds(100, 100, 646, 469);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().setLayout(null);

        JLabel lblCompanyName = new JLabel("Company Name");
        lblCompanyName.setBounds(12, 27, 104, 16);
        frame.getContentPane().add(lblCompanyName);

        JLabel lblSector = new JLabel("Sector");
        lblSector.setBounds(12, 56, 56, 16);
        frame.getContentPane().add(lblSector);

        JLabel lblCountry = new JLabel("Country");
        lblCountry.setBounds(12, 85, 56, 16);
        frame.getContentPane().add(lblCountry);

        JLabel lblCity = new JLabel("City");
        lblCity.setBounds(12, 114, 56, 16);
        frame.getContentPane().add(lblCity);

        JLabel lblAddress = new JLabel("Address");
        lblAddress.setBounds(12, 143, 56, 16);
        frame.getContentPane().add(lblAddress);

        JLabel lblNotes = new JLabel("Notes");
        lblNotes.setBounds(12, 251, 56, 16);
        frame.getContentPane().add(lblNotes);

        txtCompanyName = new JTextField();
        txtCompanyName.setBounds(128, 24, 224, 22);
        frame.getContentPane().add(txtCompanyName);
        txtCompanyName.setColumns(10);

        txtSector = new JTextField();
        txtSector.setBounds(128, 53, 224, 22);
        frame.getContentPane().add(txtSector);
        txtSector.setColumns(10);

        JComboBox comboCountry = new JComboBox();
        comboCountry.addItem("Select");
        comboCountry.addItem("Turkey");
        comboCountry.addItem("Afghanistan");
        comboCountry.addItem("Albania");
        comboCountry.addItem("Algeria");
        comboCountry.addItem("Andorra");
        comboCountry.addItem("Angola");
        comboCountry.addItem("Antigua and Barbuda");


        comboCountry.setToolTipText("Country");
        comboCountry.setBounds(128, 82, 224, 22);
        frame.getContentPane().add(comboCountry);

        txtCity = new JTextField();
        txtCity.setBounds(128, 111, 224, 22);
        frame.getContentPane().add(txtCity);
        txtCity.setColumns(10);

        txtAddress = new JTextField();
        txtAddress.setBounds(128, 140, 224, 99);
        frame.getContentPane().add(txtAddress);
        txtAddress.setColumns(10);

        txtNotes = new JTextField();
        txtNotes.setBounds(128, 248, 224, 99);
        frame.getContentPane().add(txtNotes);
        txtNotes.setColumns(10);


        /*
        JButton btnAdd = new JButton("Add");
        */
        btnAdd = new JButton("Add");

        btnAdd.setBounds(388, 23, 97, 25);
        frame.getContentPane().add(btnAdd);


        btnAdd.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {

                if((txtCompanyName.getText().isEmpty())||(txtSector.getText().isEmpty())||(txtCity.getText().isEmpty())||(txtAddress.getText().isEmpty())||(txtNotes.getText().isEmpty())||(comboCountry.getSelectedItem().equals("Select")))
                    JOptionPane.showMessageDialog(null, "Please fill all fields!");
                else        
                JOptionPane.showMessageDialog(null, "Successfully Added");



            }
        });



        JButton btnClear = new JButton("Clear");
        btnClear.setBounds(497, 23, 97, 25);
        frame.getContentPane().add(btnClear);


        btnClear.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                txtCompanyName.setText(null);
                txtSector.setText(null);
                txtCity.setText(null);
                txtAddress.setText(null);
                txtNotes.setText(null);
                comboCountry.setSelectedItem("Select");


            }
        });

        JButton btnClose = new JButton("Close");
        btnClose.setBounds(497, 81, 97, 25);
        frame.getContentPane().add(btnClose);
        btnClose.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                System.exit(0);             

            }
        }); 
    }
}

1 Ответ

0 голосов
/ 23 октября 2018

Ваш код работает нормально для меня, но использование null для параметра parentComponent JOptionPane.showMessageDialog() может вести себя по-разному на разных платформах.То есть, может быть, диалоговое окно отображается, но просто не там, где вы ожидаете.

Поскольку у вас есть родительский фрейм, почему бы не указать его?

if ((txtCompanyName.getText().isEmpty()) || (txtSector.getText().isEmpty()) || (txtCity.getText().isEmpty()) || (txtAddress.getText().isEmpty())
                            || (txtNotes.getText().isEmpty()) || (comboCountry.getSelectedItem().equals("Select"))) {
    JOptionPane.showMessageDialog(frame, "Please fill all fields!");
} else {
    JOptionPane.showMessageDialog(frame, "Successfully Added");
}
...