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)
{
}
}
所以我今天为Eclipse Kepler下载了WindowBuilder,并开始为2x2矩阵上的Operations操作编写程序。最后,我完成了所有的东西,所以我决定运行它,屏幕上没有任何东西显示,除了一个复选框。我不知道发生了什么以及单个复选框如何显示。 所以我尝试在底部添加3行,再次向JFrame添加面板,以确保因为WindowBuilder生成有点不适合的代码而且看起来都很混乱。
即使是现在,除了那个单一的复选框之外没有任何作用,我只是无法弄清楚出了什么问题。
(仅供参考,我是Swing的新手,所以你可能会发现一些写得不好的代码,但我很确定它仍会运行)
我很感激任何帮助。非常感谢!
答案 0 :(得分:1)
在添加组件并调用pack()
之后,在setVisible()
上调用window
,其中“使Window
的大小适合首选子组件的大小和布局。“
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