import javax.swing.*;
public class Matriks extends JFrame{
public Matriks(){
fieldMatriks=new JTextField[12][12];
initComponents();
for(int i=0;i<12;i++){
for(int j=0;j<12;j++){
fieldMatriks[i][j]=new JTextField();
fieldMatriks[i][j].setEnabled(false);
panelMatriks.add(fieldMatriks[i][j]);
}
}
fieldMatriks[0][0].setEnabled(true);
}
private JTextField fieldMatriks[][];
private void initComponents(){
buttonGroup1=new javax.swing.ButtonGroup();
comboDimensi=new javax.swing.JComboBox();
jLabel1=new javax.swing.JLabel();
buttonPrint=new javax.swing.JButton();
jPanel1=new javax.swing.JPanel();
radioInverse=new javax.swing.JRadioButton();
radioDeterminan=new javax.swing.JRadioButton();
radioTranspose=new javax.swing.JRadioButton();
panelMatriks=new javax.swing.JPanel();
jPanel3=new javax.swing.JPanel();
jLabel2=new javax.swing.JLabel();
jLabel3=new javax.swing.JLabel();
jLabel5=new javax.swing.JLabel();
jLabel4=new javax.swing.JLabel();
jLabel9=new javax.swing.JLabel();
jLabel8=new javax.swing.JLabel();
jLabel7=new javax.swing.JLabel();
jLabel6=new javax.swing.JLabel();
jLabel11=new javax.swing.JLabel();
jLabel10=new javax.swing.JLabel();
jLabel12=new javax.swing.JLabel();
jLabel13=new javax.swing.JLabel();
jPanel2=new javax.swing.JPanel();
jScrollPane1=new javax.swing.JScrollPane();
areaOutput=new javax.swing.JTextArea();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
comboDimensi.setModel(new javax.swing.DefaultComboBoxModel(new String[]{"1","2","3","4","5","6","7","8","9","10","11","12"}));
comboDimensi.addActionListener(new java.awt.event.ActionListener(){
public void actionPerformed(java.awt.event.ActionEvent evt){
comboDimensiActionPerformed(evt);
}
});
jLabel1.setText("Dimensi Matriks");
buttonPrint.setText("Running");
buttonPrint.addActionListener(new java.awt.event.ActionListener(){
public void actionPerformed(java.awt.event.ActionEvent evt){
buttonPrintActionPerformed(evt);
}
});
jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder("Operasi Hitung"));
buttonGroup1.add(radioInverse);
radioInverse.setSelected(true);
radioInverse.setText("Inverse");
buttonGroup1.add(radioDeterminan);
radioDeterminan.setText("Determinan");
buttonGroup1.add(radioTranspose);
radioTranspose.setText("Transpose");
javax.swing.GroupLayout jPanel1Layout=new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(radioInverse)
.addComponent(radioDeterminan)
.addComponent(radioTranspose))
.addContainerGap(16,Short.MAX_VALUE))
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addComponent(radioInverse)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(radioDeterminan)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(radioTranspose)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,Short.MAX_VALUE))
);
panelMatriks.setLayout(new java.awt.GridLayout(12, 12));
jLabel2.setText(" X1");
jLabel3.setText("X2");
jLabel5.setText("X3");
jLabel4.setText("X4");
jLabel9.setText("X5");
jLabel8.setText("X6");
jLabel7.setText("X7");
jLabel6.setText("X8");
jLabel11.setText("x9");
jLabel10.setText("X10");
jLabel12.setText("X11");
jLabel13.setText("X12");
javax.swing.GroupLayout jPanel3Layout=new javax.swing.GroupLayout(jPanel3);
jPanel3.setLayout(jPanel3Layout);
jPanel3Layout.setHorizontalGroup(
jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel3Layout.createSequentialGroup()
.addComponent(jLabel2,javax.swing.GroupLayout.PREFERRED_SIZE,29,javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel3,javax.swing.GroupLayout.PREFERRED_SIZE,29,javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel5,javax.swing.GroupLayout.PREFERRED_SIZE,29,javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel4,javax.swing.GroupLayout.PREFERRED_SIZE,29,javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel9,javax.swing.GroupLayout.PREFERRED_SIZE,29,javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel8,javax.swing.GroupLayout.PREFERRED_SIZE,29,javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel7,javax.swing.GroupLayout.PREFERRED_SIZE,29,javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel6,javax.swing.GroupLayout.PREFERRED_SIZE,29,javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel11,javax.swing.GroupLayout.PREFERRED_SIZE,29,javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel10,javax.swing.GroupLayout.PREFERRED_SIZE,29,javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel12,javax.swing.GroupLayout.PREFERRED_SIZE,29,javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel13,javax.swing.GroupLayout.PREFERRED_SIZE,29,javax.swing.GroupLayout.PREFERRED_SIZE))
);
jPanel3Layout.setVerticalGroup(
jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel2,javax.swing.GroupLayout.PREFERRED_SIZE,34,javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel3,javax.swing.GroupLayout.PREFERRED_SIZE,34,javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel5,javax.swing.GroupLayout.PREFERRED_SIZE,34,javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel4,javax.swing.GroupLayout.PREFERRED_SIZE,34,javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel9,javax.swing.GroupLayout.PREFERRED_SIZE,34,javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel8,javax.swing.GroupLayout.PREFERRED_SIZE,34,javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel7,javax.swing.GroupLayout.PREFERRED_SIZE,34,javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel6,javax.swing.GroupLayout.PREFERRED_SIZE,34,javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel11,javax.swing.GroupLayout.PREFERRED_SIZE,34,javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel10,javax.swing.GroupLayout.PREFERRED_SIZE,34,javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel12,javax.swing.GroupLayout.PREFERRED_SIZE,34,javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel13,javax.swing.GroupLayout.PREFERRED_SIZE,34,javax.swing.GroupLayout.PREFERRED_SIZE)
);
jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder("Output"));
areaOutput.setColumns(20);
areaOutput.setRows(5);
jScrollPane1.setViewportView(areaOutput);
javax.swing.GroupLayout jPanel2Layout=new javax.swing.GroupLayout(jPanel2);
jPanel2.setLayout(jPanel2Layout);
jPanel2Layout.setHorizontalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jScrollPane1,javax.swing.GroupLayout.PREFERRED_SIZE,javax.swing.GroupLayout.DEFAULT_SIZE,javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(280,Short.MAX_VALUE))
);
jPanel2Layout.setVerticalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addComponent(jScrollPane1,javax.swing.GroupLayout.PREFERRED_SIZE,javax.swing.GroupLayout.DEFAULT_SIZE,javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,Short.MAX_VALUE))
);
javax.swing.GroupLayout layout=new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jPanel2,javax.swing.GroupLayout.Alignment.LEADING,javax.swing.GroupLayout.DEFAULT_SIZE,javax.swing.GroupLayout.DEFAULT_SIZE,Short.MAX_VALUE)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(buttonPrint)
.addComponent(jPanel1,javax.swing.GroupLayout.PREFERRED_SIZE,javax.swing.GroupLayout.DEFAULT_SIZE,javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel1)
.addComponent(comboDimensi,javax.swing.GroupLayout.PREFERRED_SIZE,javax.swing.GroupLayout.DEFAULT_SIZE,javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel3,javax.swing.GroupLayout.DEFAULT_SIZE,347,Short.MAX_VALUE)
.addComponent(panelMatriks,javax.swing.GroupLayout.DEFAULT_SIZE,347,Short.MAX_VALUE))))
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(37,37,37)
.addComponent(jLabel1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(comboDimensi,javax.swing.GroupLayout.PREFERRED_SIZE,javax.swing.GroupLayout.DEFAULT_SIZE,javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jPanel1,javax.swing.GroupLayout.PREFERRED_SIZE,javax.swing.GroupLayout.DEFAULT_SIZE,javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(buttonPrint))
.addGroup(layout.createSequentialGroup()
.addGap(25,25,25)
.addComponent(jPanel3,javax.swing.GroupLayout.PREFERRED_SIZE,javax.swing.GroupLayout.DEFAULT_SIZE,javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(panelMatriks,javax.swing.GroupLayout.PREFERRED_SIZE,285,javax.swing.GroupLayout.PREFERRED_SIZE)))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jPanel2,javax.swing.GroupLayout.DEFAULT_SIZE,javax.swing.GroupLayout.DEFAULT_SIZE,Short.MAX_VALUE)
.addContainerGap())
);
pack();
}
private void buttonPrintActionPerformed(java.awt.event.ActionEvent evt){
if(radioInverse.isSelected()){
JOptionPane.showMessageDialog(this, "Belum Bisa");
}else if(radioDeterminan.isSelected()){
int jumlahOrdo=Integer.parseInt(String.valueOf(comboDimensi.getItemAt(comboDimensi.getSelectedIndex())));
int input[][]=new int[jumlahOrdo][jumlahOrdo];
for(int i=0;i<jumlahOrdo;i++){
for(int j=0;j<jumlahOrdo;j++){
input[i][j] = Integer.parseInt(fieldMatriks[i][j].getText());
}
}
int hasil=determinanMatriks(input);
areaOutput.setText(String.valueOf(hasil));
}else if(radioTranspose.isSelected()){
areaOutput.setText("");
int jumlahOrdo=Integer.parseInt(String.valueOf(comboDimensi.getItemAt(comboDimensi.getSelectedIndex())));
int input[][]=new int[jumlahOrdo][jumlahOrdo];
for(int i=0;i<jumlahOrdo;i++){
for(int j=0;j<jumlahOrdo;j++){
input[i][j]=Integer.parseInt(fieldMatriks[i][j].getText());
}
}
int hasil[][]=transposeMatriks(input);
for(int i=0;i<hasil.length;i++){
for(int j=0;j<hasil[i].length;j++){
areaOutput.append(hasil[i][j]+"\t");
}
areaOutput.append("\n");
}
}
}
private void comboDimensiActionPerformed(java.awt.event.ActionEvent evt){
int jumlahOrdo=Integer.parseInt(String.valueOf(comboDimensi.getItemAt(comboDimensi.getSelectedIndex())));
for(int i=0;i<jumlahOrdo;i++){
for(int j=0;j<jumlahOrdo;j++){
fieldMatriks[i][j].setEnabled(true);
}
}
for(int i=0;i<12;i++){
for(int j=jumlahOrdo;j<12;j++){
fieldMatriks[i][j].setEnabled(false);
}
}
for(int i=jumlahOrdo;i<12;i++){
for(int j=0;j<12;j++){
fieldMatriks[i][j].setEnabled(false);
}
}
}
public static void main(String args[]){
java.awt.EventQueue.invokeLater(new Runnable(){
public void run(){
new Matriks().setVisible(true);
}
});
}
private javax.swing.JTextArea areaOutput;
private javax.swing.ButtonGroup buttonGroup1;
private javax.swing.JButton buttonPrint;
private javax.swing.JComboBox comboDimensi;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel10;
private javax.swing.JLabel jLabel11;
private javax.swing.JLabel jLabel12;
private javax.swing.JLabel jLabel13;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel5;
private javax.swing.JLabel jLabel6;
private javax.swing.JLabel jLabel7;
private javax.swing.JLabel jLabel8;
private javax.swing.JLabel jLabel9;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
private javax.swing.JPanel jPanel3;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JPanel panelMatriks;
private javax.swing.JRadioButton radioDeterminan;
private javax.swing.JRadioButton radioInverse;
private javax.swing.JRadioButton radioTranspose;
private int[][]transposeMatriks(int[][]a){
int hasil[][]=new int[a.length][a[0].length];
for(int i=0;i<a.length;i++){
for(int j=0;j<a[i].length;j++){
hasil[j][i]=a[i][j];
}
}
return hasil;
}
private int determinanMatriks(int[][]a){
int hasil=0;
int sarrus[][];
if(a.length==2){
sarrus=a;
int temp=1;
for(int i=0;i<sarrus.length;i++){
for(int j=0;j<sarrus[i].length;j++){
System.out.print(sarrus[i][j]+" ");
}
System.out.println("");
}
temp=sarrus[0][0]*sarrus[1][1];
hasil+=temp;
System.out.println(hasil);
temp=sarrus[0][1]*sarrus[1][0];
hasil-=temp;
System.out.println(hasil);
}else{
sarrus=new int[a.length][a[0].length+a.length-1];
int temp=1;
for(int i=0;i<sarrus.length;i++){
for(int j=0;j<sarrus[i].length;j++){
if(j>=a[0].length)
sarrus[i][j]=a[i][j-a[0].length];
else
sarrus[i][j]=a[i][j];
}
}
for(int i=0;i<sarrus.length;i++){
for(int j=0;j<sarrus[i].length;j++){
System.out.print(sarrus[i][j]+" ");
}
System.out.println("");
}
for(int i=0;i<a.length;i++){
temp=1;
for(int j=0;j<a[0].length;j++){
temp*=sarrus[j][i+j];
}
hasil+=temp;
}
System.out.println(hasil);
for(int i=sarrus[0].length-1;i>=a[0].length-1;i--){
temp=1;
for(int j=0;j<a[0].length;j++){
temp*=sarrus[j][i-j];
}
hasil-=temp;
}
System.out.println(hasil);
}
return hasil;
}
}