java - 除了一个复选框之外,屏幕上没有显示任何内容

标签 java eclipse swing jframe

import java.awt.*;
import java.awt.event.*;

import javax.swing.*;
import javax.swing.table.DefaultTableModel;

public class MatrixMult extends JFrame implements ActionListener
{
    private final ButtonGroup OperationBtnGroup = new ButtonGroup();
    private JTextField tfA11;
    private JTextField tfA12;
    private JTextField tfA21;
    private JTextField tfA22;
    private JTextField tfB11;
    private JTextField tfB12;
    private JTextField tfB21;
    private JTextField tfB22;
    private JButton btnMultiply;
    private JButton btnAdd;
    private JButton btnSubtract;
    private JTextField tfC11;
    private JTextField tfC12;
    private JTextField tfC21;
    private JTextField tfC22;


    double A11, A12, A21, A22, B11, B12, B21, B22, C11, C12, C21, C22;

    public MatrixMult()
    {

        JFrame Window = new JFrame();
        Window.setAlwaysOnTop(false);
        Window.setTitle("2x2 Matrix Functions");
        Window.setVisible(true);
        Window.setSize(800, 300);
        Window.setResizable(false);
        Window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        Window.setFont(new Font("Comic Sans MS", Font.PLAIN, 12));
        Window.setLayout(new BorderLayout(0, 0));

        JPanel OpSelectBtnPanel = new JPanel();
        Window.getContentPane().add(OpSelectBtnPanel, BorderLayout.SOUTH);
        FlowLayout fl_OpSelectBtnPanel = new FlowLayout(FlowLayout.CENTER, 5, 5);
        OpSelectBtnPanel.setLayout(fl_OpSelectBtnPanel);

        JCheckBox chckbxAlwaysOnTop = new JCheckBox("Always On Top");
        chckbxAlwaysOnTop.addItemListener(new ItemListener() {
            public void itemStateChanged(ItemEvent ie) 
            {
                if(ie.getStateChange() == ItemEvent.SELECTED)
                {
                    setAlwaysTop();
                }
                else if (ie.getStateChange() == ItemEvent.DESELECTED)
                {
                    setNotAlwaysTop();
                }
            }
        });
        OpSelectBtnPanel.add(chckbxAlwaysOnTop);

        JPanel pnlMatricesAB = new JPanel();
        Window.getContentPane().add(pnlMatricesAB, BorderLayout.NORTH);
        pnlMatricesAB.setLayout(new FlowLayout(FlowLayout.CENTER, 10, 20));

        JPanel pnlMatrixA = new JPanel();
        pnlMatricesAB.add(pnlMatrixA);
        pnlMatrixA.setLayout(new GridLayout(2,2));

        tfA11 = new JTextField();
        pnlMatrixA.add(tfA11);
        tfA11.setColumns(10);

        tfA12 = new JTextField();
        pnlMatrixA.add(tfA12);
        tfA12.setColumns(10);

        tfA21 = new JTextField();
        pnlMatrixA.add(tfA21);
        tfA21.setColumns(10);

        tfA22 = new JTextField();
        pnlMatrixA.add(tfA22);
        tfA22.setColumns(10);

        JLabel lblMatrixA = new JLabel("-:Matrix A");
        pnlMatricesAB.add(lblMatrixA);

        JLabel lblMatrixB = new JLabel("Matrix B:-");
        pnlMatricesAB.add(lblMatrixB);

        JPanel pnlMatrixB = new JPanel();
        pnlMatricesAB.add(pnlMatrixB);
        pnlMatrixB.setLayout(new GridLayout(2, 2));

        tfB11 = new JTextField();
        pnlMatrixB.add(tfB11);
        tfB11.setColumns(10);

        tfB12 = new JTextField();
        pnlMatrixB.add(tfB12);
        tfB12.setColumns(10);

        tfB21 = new JTextField();
        pnlMatrixB.add(tfB21);
        tfB21.setColumns(10);

        tfB22 = new JTextField();
        pnlMatrixB.add(tfB22);
        tfB22.setColumns(10);

        JPanel pnlMatrixCAndBtns = new JPanel();
        Window.add(pnlMatrixCAndBtns, BorderLayout.CENTER);

        JPanel pnlButtons1 = new JPanel();
        pnlMatrixCAndBtns.add(pnlButtons1);
        pnlButtons1.setLayout(new BoxLayout(pnlButtons1, BoxLayout.Y_AXIS));

        JButton btnClear = new JButton("Clear");
        pnlButtons1.add(btnClear);

        JButton btnShiftLeft = new JButton("Copy C to A");
        pnlButtons1.add(btnShiftLeft);

        JButton btnShiftRight = new JButton("Copy C to B");
        pnlButtons1.add(btnShiftRight);

        JPanel pnlMatrixC = new JPanel();
        pnlMatrixCAndBtns.add(pnlMatrixC);
        pnlMatrixC.setLayout(new GridLayout(2,2));

        tfC11 = new JTextField();
        tfC11.setEditable(false);
        pnlMatrixC.add(tfC11);
        tfC11.setColumns(10);

        tfC12 = new JTextField();
        tfC12.setEditable(false);
        pnlMatrixC.add(tfC12);
        tfC12.setColumns(10);

        tfC21 = new JTextField();
        tfC21.setEditable(false);
        pnlMatrixC.add(tfC21);
        tfC21.setColumns(10);

        tfC22 = new JTextField();
        tfC22.setEditable(false);
        pnlMatrixC.add(tfC22);
        tfC22.setColumns(10);

        final JPanel pnlButtons2 = new JPanel();
        pnlMatrixCAndBtns.add(pnlButtons2);
        pnlButtons2.setLayout(new BoxLayout(pnlButtons2, BoxLayout.Y_AXIS));

        JButton btnShiftLeftRight = new JButton("Copy C to A & B");
        pnlButtons2.add(btnShiftLeftRight);

        JButton btnSqrA = new JButton("Copy A to B");
        pnlButtons2.add(btnSqrA);

        JRadioButton rdbtnMultiply = new JRadioButton("Multiply");
        rdbtnMultiply.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent ae) 
            {
                pnlButtons2.remove(btnAdd);
                pnlButtons2.remove(btnSubtract);
                pnlButtons2.revalidate();
                pnlButtons2.repaint();
                JButton btnMultiply = new JButton("Multiply");
                pnlButtons2.add(btnMultiply);

                //Multiplications
                btnMultiply.addActionListener(new ActionListener() 
                {
                    public void actionPerformed(ActionEvent ae)
                    {
                        multiply();
                    }
                });

            }
        });
        OperationBtnGroup.add(rdbtnMultiply);
        OpSelectBtnPanel.add(rdbtnMultiply);

        JRadioButton rdbtnAdd = new JRadioButton("Add");
        rdbtnAdd.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent ae) 
            {
                pnlButtons2.remove(btnMultiply);
                pnlButtons2.remove(btnSubtract);
                pnlButtons2.revalidate();
                pnlButtons2.repaint();
                JButton btnAdd = new JButton("Add");
                pnlButtons2.add(btnAdd);

                //Addition
                btnAdd.addActionListener(new ActionListener() 
                {
                    public void actionPerformed(ActionEvent ae)
                    {
                        addMatrix();
                    }
                });
            }
        });
        OperationBtnGroup.add(rdbtnAdd);
        OpSelectBtnPanel.add(rdbtnAdd);

        JRadioButton rdbtnSubtract = new JRadioButton("Subtract");
        rdbtnSubtract.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent ae) 
            {
                pnlButtons2.remove(btnAdd);
                pnlButtons2.remove(btnMultiply);
                pnlButtons2.revalidate();
                pnlButtons2.repaint();
                JButton btnSubtract = new JButton("Subtract");
                pnlButtons2.add(btnSubtract);

                //Subtraction
                btnSubtract.addActionListener(new ActionListener() 
                {
                    public void actionPerformed(ActionEvent ae)
                    {
                        subtract();
                    }
                });
            }
        });
        OperationBtnGroup.add(rdbtnSubtract);
        OpSelectBtnPanel.add(rdbtnSubtract);

        //Buttons Events

        //ShiftLeft
        btnShiftLeft.addActionListener(new ActionListener() 
        {
            public void actionPerformed(ActionEvent ae)
            {
                shiftLeft();
            }
        });


        //Shift Right
        btnShiftRight.addActionListener(new ActionListener() 
        {
            public void actionPerformed(ActionEvent ae)
            {
                shiftRight();
            }
        });

        //Copy C To A and B
        btnShiftLeftRight.addActionListener(new ActionListener() 
        {
            public void actionPerformed(ActionEvent ae)
            {
                shiftLeftRight();
            }
        });

        //Square A
        btnSqrA.addActionListener(new ActionListener() 
        {
            public void actionPerformed(ActionEvent ae)
            {
                copyAB();
            }
        });

        //Clear
        btnClear.addActionListener(new ActionListener() 
        {
            public void actionPerformed(ActionEvent ae)
            {
                clear();
            }
        });


        Window.add(OpSelectBtnPanel, BorderLayout.SOUTH);
        Window.add(pnlMatricesAB, BorderLayout.NORTH);
        Window.add(pnlMatrixCAndBtns, BorderLayout.CENTER);


    }//Constructor Ends

    public void setAlwaysTop()
    {
        setAlwaysOnTop(true);
    }

    public void setNotAlwaysTop()
    {
        setAlwaysOnTop(false);
    }

    public void multiply()
    {
        A11 = Double.parseDouble(tfA11.getText());    
        A12 = Double.parseDouble(tfA12.getText());    
        A21 = Double.parseDouble(tfA21.getText());    
        A22 = Double.parseDouble(tfA22.getText());    

        B11 = Double.parseDouble(tfB11.getText());    
        B12 = Double.parseDouble(tfB12.getText());    
        B21 = Double.parseDouble(tfB21.getText());    
        B22 = Double.parseDouble(tfB22.getText());    

        C11 = (A11 * B11) + (A12 * B21);
        C12 = (A11 * B12) + (A12 * B22);
        C21 = (A21 * B11) + (A22 * B21);
        C22 = (A21 * B12) + (A22 * B22);

        String C11Str = String.valueOf(C11);
        String C12Str = String.valueOf(C12);
        String C21Str = String.valueOf(C21);
        String C22Str = String.valueOf(C22);

        tfC11.setText(C11Str);
        tfC12.setText(C12Str);
        tfC21.setText(C21Str);
        tfC22.setText(C22Str);

        A11 = 0; A12 = 0; A21 = 0; A22 = 0; 
        B11 = 0; B12 = 0; B21 = 0; B22 = 0; 
        C11 = 0; C12 = 0; C21 = 0; C22 = 0;
    }

    public void addMatrix()
    {
        A11 = Double.parseDouble(tfA11.getText());    
        A12 = Double.parseDouble(tfA12.getText());    
        A21 = Double.parseDouble(tfA21.getText());    
        A22 = Double.parseDouble(tfA22.getText());    

        B11 = Double.parseDouble(tfB11.getText());    
        B12 = Double.parseDouble(tfB12.getText());    
        B21 = Double.parseDouble(tfB21.getText());    
        B22 = Double.parseDouble(tfB22.getText());    

        C11 = (A11 + B11);
        C12 = (A12 + B12);
        C21 = (A21 + B21);
        C22 = (A22 + B22);

        String C11Str = String.valueOf(C11);
        String C12Str = String.valueOf(C12);
        String C21Str = String.valueOf(C21);
        String C22Str = String.valueOf(C22);

        tfC11.setText(C11Str);
        tfC12.setText(C12Str);
        tfC21.setText(C21Str);
        tfC22.setText(C22Str);

        A11 = 0; A12 = 0; A21 = 0; A22 = 0; 
        B11 = 0; B12 = 0; B21 = 0; B22 = 0; 
        C11 = 0; C12 = 0; C21 = 0; C22 = 0;
    }

    public void subtract()
    {
        A11 = Double.parseDouble(tfA11.getText());    
        A12 = Double.parseDouble(tfA12.getText());    
        A21 = Double.parseDouble(tfA21.getText());    
        A22 = Double.parseDouble(tfA22.getText());    

        B11 = Double.parseDouble(tfB11.getText());    
        B12 = Double.parseDouble(tfB12.getText());    
        B21 = Double.parseDouble(tfB21.getText());    
        B22 = Double.parseDouble(tfB22.getText());    

        C11 = (A11 - B11);
        C12 = (A12 - B12);
        C21 = (A21 - B21);
        C22 = (A22 - B22);

        String C11Str = String.valueOf(C11);
        String C12Str = String.valueOf(C12);
        String C21Str = String.valueOf(C21);
        String C22Str = String.valueOf(C22);

        tfC11.setText(C11Str);
        tfC12.setText(C12Str);
        tfC21.setText(C21Str);
        tfC22.setText(C22Str);

        A11 = 0; A12 = 0; A21 = 0; A22 = 0; 
        B11 = 0; B12 = 0; B21 = 0; B22 = 0; 
        C11 = 0; C12 = 0; C21 = 0; C22 = 0;
    }

    public void shiftLeft()
    {
        A11 = 0; A12 = 0; A21 = 0; A22 = 0;
        B11 = 0; B12 = 0; B21 = 0; B22 = 0;

        C11 = Double.parseDouble(tfC11.getText());
        C12 = Double.parseDouble(tfC12.getText());
        C21 = Double.parseDouble(tfC21.getText());
        C22 = Double.parseDouble(tfC22.getText());

        tfA11.setText(String.valueOf(C11));
        tfA12.setText(String.valueOf(C12));
        tfA21.setText(String.valueOf(C21));
        tfA22.setText(String.valueOf(C22));

        C11 = 0; C12 = 0; C21 = 0; C22 = 0;

        tfB11.setText("");
        tfB12.setText("");
        tfB21.setText("");
        tfB22.setText("");

        tfC11.setText("C11");
        tfC12.setText("C12");
        tfC21.setText("C21");
        tfC22.setText("C22");
    }

    public void shiftRight()
    {
        A11 = 0; A12 = 0; A21 = 0; A22 = 0;
        B11 = 0; B12 = 0; B21 = 0; B22 = 0;

        C11 = Double.parseDouble(tfC11.getText());
        C12 = Double.parseDouble(tfC12.getText());
        C21 = Double.parseDouble(tfC21.getText());
        C22 = Double.parseDouble(tfC22.getText());

        tfB11.setText(String.valueOf(C11));
        tfB12.setText(String.valueOf(C12));
        tfB21.setText(String.valueOf(C21));
        tfB22.setText(String.valueOf(C22));

        C11 = 0; C12 = 0; C21 = 0; C22 = 0;

        tfA11.setText("");
        tfA12.setText("");
        tfA21.setText("");
        tfA22.setText("");

        tfC11.setText("C11");
        tfC12.setText("C12");
        tfC21.setText("C21");
        tfC22.setText("C22");
    }

    public void shiftLeftRight()
    {
        A11 = 0; A12 = 0; A21 = 0; A22 = 0;
        B11 = 0; B12 = 0; B21 = 0; B22 = 0;

        C11 = Double.parseDouble(tfC11.getText());
        C12 = Double.parseDouble(tfC12.getText());
        C21 = Double.parseDouble(tfC21.getText());
        C22 = Double.parseDouble(tfC22.getText());

        tfA11.setText(String.valueOf(C11));
        tfA12.setText(String.valueOf(C12));
        tfA21.setText(String.valueOf(C21));
        tfA22.setText(String.valueOf(C22));

        C11 = 0; C12 = 0; C21 = 0; C22 = 0;

        A11 = Double.parseDouble(tfA11.getText());
        A12 = Double.parseDouble(tfA12.getText());
        A21 = Double.parseDouble(tfA21.getText());
        A22 = Double.parseDouble(tfA22.getText());

        tfB11.setText(String.valueOf(A11));
        tfB12.setText(String.valueOf(A12));
        tfB21.setText(String.valueOf(A21));
        tfB22.setText(String.valueOf(A22));
    }

    public void copyAB()
    {
        B11 = 0; B12 = 0; B21 = 0; B22 = 0;

        A11 = Double.parseDouble(tfA11.getText());
        A12 = Double.parseDouble(tfA12.getText());
        A21 = Double.parseDouble(tfA21.getText());
        A22 = Double.parseDouble(tfA22.getText());

        tfB11.setText(String.valueOf(A11));
        tfB12.setText(String.valueOf(A12));
        tfB21.setText(String.valueOf(A21));
        tfB22.setText(String.valueOf(A22));
    }

    public void clear()
    {
        A11 = 0; A12 = 0; A21 = 0; A22 = 0; 
        B11 = 0; B12 = 0; B21 = 0; B22 = 0; 
        C11 = 0; C12 = 0; C21 = 0; C22 = 0;

        tfA11.setText("");
        tfA12.setText("");
        tfA21.setText("");
        tfA22.setText("");

        tfB11.setText("");
        tfB12.setText("");
        tfB21.setText("");
        tfB22.setText("");

        tfC11.setText("");
        tfC12.setText("");
        tfC21.setText("");
        tfC22.setText("");
    }

    public static void main(String args[])
    {
        try
        {
            UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
        }
        catch (UnsupportedLookAndFeelException e)
            {
            }
        catch (ClassNotFoundException e) 
            {
            }
        catch (InstantiationException e) 
            {
            }
        catch (IllegalAccessException e) 
            {
            }

        new MatrixMult();
    }


    public void actionPerformed(ActionEvent AE)
    {

    }
}

所以我今天下载了 WindowBuilder for Eclipse Kepler 并开始编写一个用于 2x2 矩阵运算的程序。最后,我完成了所有的工作,所以我决定运行它,除了一个复选框之外,屏幕上什么也没有显示。我不知道发生了什么以及那个复选框是如何显示的。 因此,我尝试在底部添加 3 行,再次将面板添加到 JFrame,只是为了确保因为 WindowBuilder 生成了一些间隔不均匀的代码,并且所有内容看起来都经过调整。

即使现在,除了那个复选框之外,什么也不起作用,我就是不知道出了什么问题。

(仅供引用,我是 Swing 新手,因此您可能会发现一些写得不好的代码,但我很确定它仍然可以运行)

如果有任何帮助,我将不胜感激。非常感谢!

最佳答案

添加组件并调用 pack() 之后窗口上调用setVisible() ,这“导致此Window调整大小以适应其子组件的首选大小和布局。”

image

public MatrixMult() {
    JFrame window = new JFrame();
    //window.setAlwaysOnTop(false);
    window.setTitle("2x2 Matrix Functions");
    //window.setVisible(true);
    //window.setSize(800, 300);
    //window.setResizable(false);
    …
    window.add(pnlMatrixCAndBtns, BorderLayout.CENTER);
    window.pack();
    window.setLocationRelativeTo(null);
    window.setVisible(true);
}//Constructor Ends

关于java - 除了一个复选框之外,屏幕上没有显示任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26076650/

相关文章:

java - ServerSocket 不接受 droid 模拟器

eclipse - 如何解决 Git 错误 : "Couldn' t create temporary repository"

java - 我如何在 JPanel 上绘图然后显示在 JFrame 上?

java - 将 JButton 控件添加到 JApplet 并且 JButton 填满整个屏幕

java - ANTLR 生成空条件

java - 使用 itext 创建带有笛卡尔网格的 Pdf?

mysql - 无法在 eclipse 中创建 jpa 表

java - 如何解决 JToggleButtons、JPanels 和 JScrollPanes 的这些大小调整问题?

java - 如何编写elasticsearch DSL查询的java代码

java - 从 JSON 对象获取数组