因为心血来潮,做了自己的第一项目,矩阵计算器,是不是感觉好无聊。
因为整个项目,我做了三天,每天都在弄这个,参考了好多书籍,然而,经历过大量的测试后,才成功运行成功,并完成了自己的需求,成功之后,有那么一点点,兴奋,毕竟是自己的第一个项目,跟别人说,可能会被嘲笑吧,但是真的挺兴奋的,嘿嘿,
但是之后,成就感就荡然无存了,因为自己写的代码,显得很东拼西凑,并没有那些规划性,别人都是事先做好了,哪一步做哪一步,事先规划好。而我,临时想的,又不知道从哪里下手,显得好失败的感觉
代码块
package cn.itcast.app;
import cn.itcast.ui.MainFrame;
public class MainApp {
public static void main(String[] args) {
MainFrame frame = new MainFrame();
frame.setVisible(true);
}
}
package cn.itcast.ui;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GridLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.border.TitledBorder;
public class MainFrame extends JFrame {
ComputerListener computer;
private JTextArea textShow;
static JButton button;
private JTextField inputNumberTwo;
private JTextField inputNumberOne;
static JButton button1;
public MainFrame(){
init();
addCompont();
addCompont1();
addCompont2();
Listener();
}
private void addCompont2() {
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(1,1));
JPanel southPanel = new JPanel();
southPanel.setBorder(new TitledBorder("Answer"));
southPanel.setBackground(Color.PINK);
textShow = new JTextArea(12,43);
southPanel.add(new JScrollPane(textShow));
panel.add(southPanel,BorderLayout.EAST);
this.add(panel,BorderLayout.SOUTH);
}
private void addCompont1() {
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(1,1));
JPanel center = new JPanel();
center.setBorder(new TitledBorder("矩阵值"));
center.setBackground(Color.PINK);
inputNumberTwo = new JTextField(43);
center.add(inputNumberTwo);
panel.add(center,BorderLayout.EAST);
this.add(panel,BorderLayout.CENTER);
}
private void addCompont() {
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(1,2));
JPanel northPanel = new JPanel();
northPanel.setBorder(new TitledBorder("阶数"));
northPanel.setBackground(Color.PINK);
inputNumberOne = new JTextField(20);
northPanel.add(inputNumberOne);
panel.add(northPanel, BorderLayout.WEST);
JPanel rightPanel = new JPanel();
rightPanel.setBackground(Color.PINK);
rightPanel.setLayout(new GridLayout(1,1));
button = new JButton("Calculate");
button.setBackground(Color.PINK);
button1 = new JButton("Reset");
button1.setBackground(Color.PINK);
rightPanel.add(button,BorderLayout.WEST);
rightPanel.add(button1,BorderLayout.EAST);
panel.add(rightPanel,BorderLayout.EAST);
this.add(panel,BorderLayout.NORTH);
}
private void Listener(){
computer = new ComputerListener();
computer.setJTextFieldOne(inputNumberOne);
computer.setJTextFieldTwo(inputNumberTwo);
computer.setJTextArea(textShow);
button.addActionListener(computer);
button1.addActionListener(computer);
}
private void init() {
//标题
this.setTitle("矩阵计算");
//大小
this.setSize(500, 400);
//固定位置
this.setLocation(150,40);
//固定大小
this.setResizable(false);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
}
}
package cn.itcast.ui;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JTextArea;
import javax.swing.JTextField;
public class ComputerListener implements ActionListener {
JTextField inputNumberOne, inputNumberTwo;
JTextArea textShow;
public void setJTextFieldOne(JTextField t) {
inputNumberOne = t;
}
public void setJTextFieldTwo(JTextField t) {
inputNumberTwo = t;
}
public void setJTextArea(JTextArea area) {
textShow = area;
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == MainFrame.button1) {
inputNumberOne.setText("");
inputNumberTwo.setText("");
}
if (e.getSource() == MainFrame.button) {
try {
int number1 = Integer.parseInt(inputNumberOne.getText());
String str = inputNumberTwo.getText();
String[] data = str.split(" ");
int[][] z = new int[number1][number1];
int k = 0;
for (int i = 0; i < number1; i++)
for (int j = 0; j < number1; j++) {
z[i][j] = Integer.parseInt(data[k]);
k++;
}
for (int a = 0; a < number1; a++) {
for (int b = 0; b < number1; b++) {
textShow.append(z[a][b] + " ");
}
textShow.append("\n");
}
String str1 = String.valueOf(Det(z, number1 - 1));
textShow.append(str1+"\n");
textShow.append("--------------------------------------\n");
} catch (Exception exp) {
textShow.append("\nPlease Input Number\n");
}
}
}
public static int Det(int[][] Matrix, int N) {
int T0;
int T1;
int T2;
int Num;
int Cha;
int[][] B;
if (N > 0) {
Cha = 0;
B = new int[N][N];
Num = 0;
if (N == 1) {
return Matrix[0][0] * Matrix[1][1] - Matrix[0][1]
* Matrix[1][0];
}
for (T0 = 0; T0 <= N; T0++) {
for (T1 = 1; T1 <= N; T1++) {
for (T2 = 0; T2 <= N - 1; T2++) {
if (T2 == T0) {
Cha = 1;
}
B[T1 - 1][T2] = Matrix[T1][T2 + Cha];
}
Cha = 0;
}
Num = (int) (Num + Matrix[0][T0] * Det(B, N - 1)
* Math.pow((-1), T0));
}
return Num;
} else if (N == 0) {
return Matrix[0][0];
}
return 0;
}
}