Dans JCreator, je dois créer un programme qui me permette de trouver une matrice inverse, j'ai déjà utilisé un code pour trouver une matrice inverse, mais j'ai du mal à obtenir une interface graphique format.Créer une interface graphique qui trouve l'inverse de la matrice
Voici mon aperçu de l'interface graphique à ce jour,
*Matrix
*
*/
import java.awt.*; // Java Library
import javax.swing.*; // Java Library
import java.awt.event.*; // Java Library
public class Matrix extends JFrame{ // class
private JTextField jtfSize; // Text field
private JTextField jtfElements; // Text field
private JTextField jtfResult; // Text field
private JLabel jlblSize; // Label
private JLabel jlblElements; // Label
private JLabel jblblResult; // Lablel
private JPanel entryPanel; // Panel
private JPanel buttonPanel; // Panel
private JButton jbtCalculate; // Button
public static void main (String[] args){ // main
Matrix Frame = new Matrix(); // Frame
frame.setTitle("Matrix Inverse Calcualator"); // Frame Name
frame.setSize (500, 500); // Frame Size
frame.setLocation (400, 400); // Frame Location on Screen
frame.setDefaultCloseOperation(EXIT_ON_CLOSE); // Set Close Option
frame.setVisible(true); //
}
public Matrix(){ //
jlblSize = new JLabel ("Matrix Size:", JLabel.CENTER); // Centre Label
jlblElements = new JLabel ("Matrix Elements: ", JLabel.CENTER); // Centre Lable
jlblResult = new JLabel ("RESULT: ", JLabel.CENTER); // Centre Jlabel
jtfSize = new JTextField(12); // Text Field
jtfElements = new JTextField(12); // Text field 12 font
jtfResult = new JTextField(12); // Text Field 12 front
entryPanel = new JPanel(); // Panel
jtfResult.setEditable(false); // make RESULT Field uneditable
entryPanel.setLayout (new GridLayout (3,2)); // Set layout manager of Panel
entryPanel.add(jlblSize); // Add component to Panel
entryPanel.add(jtfSize); // Add component to Panel
entryPanel.add(jlblElements); // Add component to Panel
entryPanel.add(jtfElements); // Add component to Panel
entryPanel.add(jlblResult); // Add component to Panel
entryPanel.add(jtfResult); // Add component to Panel
add(entryPanel, BorderLayout.CENTER); // add entryPanel to frame
jbtCalculate = new JButton("Calculate"); // Add button and insert text for button
buttonPanel = new JPanel(); // Creates Panel for Button
buttonPanel.add(jbtCalculate); // insert Calculate button to panel
add(buttonPanel, BorderLayout.SOUTH); // Panel layout
jbtCalculate.addMouseListener(new List_ButtonCAL()); //
}
private class list_ButtonCAL implements MouseListener{ //
public void mouseClicked (MouseEvent event){ //
double x=Double.parseDouble(jtfSize.getText());
double y=String.parseDouble(jtfElements.getText());
jtfResult.setText(String.);
}
}
}
est maintenant ici le code, je travaille au large, Je ne parviens pas à trouver comment placer ce dans le format graphique.
import java.util.Scanner; // Import Scanner library
class matrixinverse { // start of class
public static void main(String argv[]){ // start of main
Scanner input = new Scanner(System.in); // input Scanner library
System.out.println("Enter the dimension of square matrix: "); // Ouput on screen
int n = input.nextInt(); // user inputs figure
double a[][]= new double[n][n]; //
System.out.println("Enter the elements of matrix: "); // Ouput on screen
for(int i=0; i<n; i++) //
for(int j=0; j<n; j++)
a[i][j] = input.nextDouble(); //
double d[][] = invert(a); //
System.out.println("The inverse is: "); // Ooutput on screen
for (int i=0; i<n; ++i){ //
for (int j=0; j<n; ++j) { //
System.out.print(d[i][j]+" "); //
} //
System.out.println(); //
} //
input.close(); //
}
public static double[][] invert(double a[][]){ //
int n = a.length; //
double x[][] = new double[n][n]; //
double b[][] = new double[n][n]; //
int index[] = new int[n]; //
for (int i=0; i<n; ++i) //
b[i][i] = 1; //
gaussian(a, index); //
for (int i=0; i<n-1; ++i) //
for (int j=i+1; j<n; ++j) //
for (int k=0; k<n; ++k) //
b[index[j]][k]
-= a[index[j]][i]*b[index[i]][k]; //
for (int i=0; i<n; ++i){ //
x[n-1][i] = b[index[n-1]][i]/a[index[n-1]][n-1]; //
for (int j=n-2; j>=0; --j){
x[j][i] = b[index[j]][i]; //
for (int k=j+1; k<n; ++k) {
x[j][i] -= a[index[j]][k]*x[k][i]; //
}
x[j][i] /= a[index[j]][j];
}
}
return x;
} //
public static void gaussian(double a[][], int index[]){
int n = index.length; //
double c[] = new double[n]; //
for (int i=0; i<n; ++i)
index[i] = i;
for (int i=0; i<n; ++i){
double c1 = 0;
for (int j=0; j<n; ++j){
double c0 = Math.abs(a[i][j]);
if (c0 > c1) c1 = c0;
}
c[i] = c1;
}
int k = 0;
for (int j=0; j<n-1; ++j){
double pi1 = 0;
for (int i=j; i<n; ++i){
double pi0 = Math.abs(a[index[i]][j]);
pi0 /= c[index[i]];
if (pi0 > pi1){
pi1 = pi0;
k = i;
}
}
int itmp = index[j];
index[j] = index[k];
index[k] = itmp;
for (int i=j+1; i<n; ++i)
{
double pj = a[index[i]][j]/a[index[j]][j];
a[index[i]][j] = pj;
for (int l=j+1; l<n; ++l)
a[index[i]][l] -= pj*a[index[j]][l];
}
}
}
}
Toute aide sera appréciée. Merci d'avance :)
Une interface graphique ne doit jamais trouver l'inverse d'une matrice. Les interfaces graphiques peuvent vous permettre d'entrer une matrice; ils pourraient afficher l'inverse d'une matrice; mais l'inversion de la matrice doit être faite dans un code non-GUI. –
C'est une mission pour l'université. Je suis obligé de le faire en format GUI – Lee