简体   繁体   English

制作自定义JOptionPane对话框时遇到麻烦

[英]having trouble with making custom JOptionPane dialogs

So, before you go and say that I should do more research, I have been trying to figure this out for about a week now and this is kind of my last resort. 因此,在您说我应该做更多研究之前,我一直在设法解决这一问题已有大约一周的时间,这是我的最后选择。 Moving on, I'm trying to make a dialog box with multiple buttons; 继续,我试图创建一个带有多个按钮的对话框。 a calculator. 一个计算器。 Although, I don't know almost any of the methods of javax.swing . 虽然,我几乎不知道javax.swing的任何方法 I only know the JOptionPane method and a little bit of JTextField . 我只知道JOptionPane方法和一些JTextField Please, if possible, give me a hint or some clues as to what i need to do so that I can figure it out myself. 请尽可能给我一个提示或一些提示,以便我自己解决。 Thanks for your time. 谢谢你的时间。

JOptionPane don't have the functionalities you are looking for. JOptionPane没有您要的功能。 If you want a lot of more buttons populating your Dialog you need some other component. 如果您想在对话框中添加更多按钮,则需要其他组件。 Here is a skeleton of a calculator. 这是计算器的骨架。 You have to add the logic: 您必须添加逻辑:

import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
import javax.swing.border.EmptyBorder;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class Calculator extends JDialog {

    private final JPanel contentPanel = new JPanel();
    private JTextField textField;

    public static void main(String[] args) {
        try {
            Calculator dialog = new Calculator();
            dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
            dialog.setVisible(true);
        } catch (Exception e) {
        }
    }

    public Calculator() {
        addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent arg0) {
                JOptionPane.showMessageDialog(null, "Bye");
            }
        });
        setBounds(100, 100, 348, 234);
        getContentPane().setLayout(new BorderLayout());
        contentPanel.setBorder(new EmptyBorder(5, 5, 5, 5));
        getContentPane().add(contentPanel, BorderLayout.CENTER);
        contentPanel.setLayout(null);
        {
            textField = new JTextField();
            textField.setHorizontalAlignment(SwingConstants.RIGHT);
            textField.setBounds(12, 13, 323, 19);
            contentPanel.add(textField);
            textField.setColumns(10);
        }

        JButton button_8 = new JButton("8");
        button_8.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                textField.setText("8 pressed");
            }
        });
        button_8.setBounds(79, 46, 55, 25);
        contentPanel.add(button_8);

        JButton button_9 = new JButton("9");
        button_9.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                textField.setText("9 pressed");
            }
        });
        button_9.setBounds(146, 46, 55, 25);
        contentPanel.add(button_9);

        JButton button_4 = new JButton("4");
        button_4.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                textField.setText("4 pressed");
            }
        });
        button_4.setBounds(12, 83, 55, 25);
        contentPanel.add(button_4);

        JButton button_5 = new JButton("5");
        button_5.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                textField.setText("5 pressed");
            }
        });
        button_5.setBounds(79, 83, 55, 25);
        contentPanel.add(button_5);

        JButton button_6 = new JButton("6");
        button_6.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                textField.setText("6 pressed");
            }
        });
        button_6.setBounds(146, 83, 55, 25);
        contentPanel.add(button_6);

        JButton button_1 = new JButton("1");
        button_1.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                textField.setText("1 pressed");
            }
        });
        button_1.setBounds(12, 120, 55, 25);
        contentPanel.add(button_1);

        JButton button_2 = new JButton("2");
        button_2.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                textField.setText("2 pressed");
            }
        });
        button_2.setBounds(79, 120, 55, 25);
        contentPanel.add(button_2);

        JButton button_3 = new JButton("3");
        button_3.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                textField.setText("3 pressed");
            }
        });
        button_3.setBounds(146, 120, 55, 25);
        contentPanel.add(button_3);

        JButton button_0 = new JButton("0");
        button_0.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                textField.setText("0 pressed");
            }
        });
        button_0.setBounds(12, 157, 122, 25);
        contentPanel.add(button_0);

        JButton button_point = new JButton(".");
        button_point.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                textField.setText(". pressed");
            }
        });
        button_point.setBounds(146, 157, 55, 25);
        contentPanel.add(button_point);

        JButton button_divide = new JButton("/");
        button_divide.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                textField.setText("/ pressed");
            }
        });
        button_divide.setBounds(213, 46, 55, 25);
        contentPanel.add(button_divide);

        JButton button_multiply = new JButton("*");
        button_multiply.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                textField.setText("* pressed");
            }
        });
        button_multiply.setBounds(213, 83, 55, 25);
        contentPanel.add(button_multiply);

        JButton button_subtract = new JButton("-");
        button_subtract.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                textField.setText("- pressed");
            }
        });
        button_subtract.setBounds(213, 120, 55, 25);
        contentPanel.add(button_subtract);

        JButton button_sum = new JButton("+");
        button_sum.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                textField.setText("+ pressed");
            }
        });
        button_sum.setBounds(213, 157, 55, 25);
        contentPanel.add(button_sum);

        JButton button_back = new JButton("<");
        button_back.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                textField.setText("Back pressed");
            }
        });
        button_back.setBounds(280, 46, 55, 25);
        contentPanel.add(button_back);

        JButton button_clear = new JButton("C");
        button_clear.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                textField.setText("Clear pressed");
            }
        });
        button_clear.setBounds(280, 83, 55, 25);
        contentPanel.add(button_clear);

        JButton button_equals = new JButton("=");
        button_equals.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                textField.setText("= pressed");
            }
        });
        button_equals.setBounds(280, 120, 55, 62);
        contentPanel.add(button_equals);

        JButton button_7 = new JButton("7");
        button_7.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                textField.setText("7 pressed");
            }
        });
        button_7.setBounds(12, 46, 55, 25);
        contentPanel.add(button_7);
        {
            JPanel buttonPane = new JPanel();
            buttonPane.setLayout(new FlowLayout(FlowLayout.RIGHT));
            getContentPane().add(buttonPane, BorderLayout.SOUTH);
        }
    }
}

Hope it helps. 希望能帮助到你。 A clue: this was made using WindowBuiler for Eclipse. 线索:这是使用WindowBuiler for Eclipse制作的。 You should try it as well. 您也应该尝试一下。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM