Implementasi Kelas HalamanUtama Implementasi Kelas
data.adddata2; }
DefaultTableModel model = new DefaultTableModeldata, columnName;
dataPreprocessTable.setModelmodel; dataPreprocessTable.setAutoResizeModeJTable.AUTO_RESIZE_OFF;
updateCellWidthdataPreprocessTable; dataPreprocessTable.setAutoCreateRowSortertrue;
hasilDeteksiTextArea.setTextnull; barisTextField.setText + data.size;
atributTextField.setText + columnName.size; pathTextField.setTextTabel : + namaTabel;
pathTextField.setEditablefalse; for int i = 0; i model.getColumnCount; i++ {
for int j = 0; j model.getRowCount; j++ { if i == 0 {
if model.getValueAtj, i == null { JOptionPane.showMessageDialognull, Label data Anda
tidak lengkap + \n + Silahkan periksa kembali label data pada tabel
basisdata; i = model.getColumnCount - 1;
this.dispose; break;
} } else {
if model.getValueAtj, i == null || model.getValueAtj, i.toString.matches[0-9.]
|| model.getValueAtj, i.toString.matches[.] { JOptionPane.showMessageDialognull, Data Anda tidak
lengkap dan atau terdapat karakter bukan angka + \n + Silahkan periksa kembali data pada tabel
basisdata; i = model.getColumnCount - 1;
break; }
} }
} for int i = 0; i model.getColumnCount; i++ {
seleksi_atribut = new SeleksiAtribut; seleksi_atribut.setAtributmodel.getColumnNamei;
seleksi_atribut.setPilihfalse; cb_table.addi, seleksi_atribut;
} seleksiTable.setModelcb_table;
TableModel tableModel = dataPreprocessTable.getModel; tableDeteksiOutlier.setModeltableModel;
tableDeteksiOutlier.setAutoResizeModeJTable.AUTO_RESIZE_OFF; updateCellWidthtableDeteksiOutlier;
int baris = tableModel.getRowCount; jumlahBarisDeteksi.setText + baris;
} catch Exception e { }
} public HalamanUtamaDatabaseConnection conn, String namaTabel {
initComponents; setTitleHalaman Utama;
tampilIsiDataBasisdataconn, namaTabel; }
public void PilihDB { hapusButton.setEnabledtrue;
tandaiSemuaButton.setEnabledtrue; batalTandaiButton.setEnabledtrue;
distribusiButton.setEnabledtrue; submitDataButton.setEnabledtrue;
pathTextField.setEditablefalse; HalamanPilihDatabase pilih_db = new HalamanPilihDatabase;
pilih_db.setVisibletrue; }
public void submitData { TableModel tableModel = dataPreprocessTable.getModel;
if tableModel.getColumnCount == 0 { JOptionPane.showMessageDialognull, Anda belum memasukkan
data ; pathTextField.setTextnull;
} else { tableDeteksiOutlier.setModeltableModel;
tableDeteksiOutlier.setAutoResizeModeJTable.AUTO_RESIZE_OFF; updateCellWidthtableDeteksiOutlier;
int baris = tableModel.getRowCount; jumlahBarisDeteksi.setText + baris;
System.out.println + baris; jTabbedPane1.setSelectedComponentdeteksiPanel;
jTabbedPane1.setEnabledAt1, true; }
}
public void distribusiAtribut { ListString daftar_atribut = null;
daftar_atribut = new ArrayListString; for int i = 1; i dataPreprocessTable.getColumnCount; i++ {
daftar_atribut.adddataPreprocessTable.getColumnNamei; }
HalamanDistribusiAtribut grafik = new HalamanDistribusiAtributdaftar_atribut, dataPreprocessTable;
grafik.setVisibletrue; }
public void pilihFile { JFileChooser fileChooser = new JFileChooser;
int returnValue = fileChooser.showOpenDialognull; if returnValue == JFileChooser.APPROVE_OPTION {
String nama_file = fileChooser.getSelectedFile.getPath; String[] potong_nama_file = nama_file.split\\.;
if potong_nama_file[1].equalsxls { cb_table.removeRow2;
File fileExcel = fileChooser.getSelectedFile; Vector columnName = new Vector;
Vector data = new Vector; try {
Workbook workbook = Workbook.getWorkbookfileExcel; Sheet sheet = workbook.getSheet0;
columnName.clear; for int i = 0; i sheet.getColumns; i++ {
Cell cell = sheet.getCelli, 0; columnName.addcell.getContents;
} data.clear;
for int j = 1; j sheet.getRows; j++ { Vector data2 = new Vector;
for int i = 0; i sheet.getColumns; i++ { Cell cell = sheet.getCelli, j;
data2.addcell.getContents; }
data2.add\n; data.adddata2;
} } catch Exception e {
e.printStackTrace; }
DefaultTableModel model = new DefaultTableModeldata, columnName;
dataPreprocessTable.setModelmodel; dataPreprocessTable.setAutoResizeModeJTable.AUTO_RESIZE_OFF;
updateCellWidthdataPreprocessTable; dataPreprocessTable.setAutoCreateRowSortertrue;
barisTextField.setText + data.size; atributTextField.setText + columnName.size;
pathTextField.setTextfileExcel.getPath; hasilDeteksiTextArea.setTextnull;
hapusButton.setEnabledtrue; distribusiButton.setEnabledtrue;
submitDataButton.setEnabledtrue; tandaiSemuaButton.setEnabledtrue;
batalTandaiButton.setEnabledtrue; for int i = 0; i model.getColumnCount; i++ {
for int j = 0; j model.getRowCount; j++ { if i == 0 {
if i == 0 model.getValueAtj, 0.toString.isEmpty {
JOptionPane.showMessageDialognull, Label data tidak lengkap + \n
+ Silahkan lengkapi label data pada file asli; i = model.getColumnCount - 1;
this.dispose; HalamanAwal awal = new HalamanAwal;
awal.setVisibletrue; break;
} } else {
if model.getValueAtj, i.toString.isEmpty || model.getValueAtj, i.toString.matches[0-9.]
|| model.getValueAtj, i.toString.matches[.] { HalamanMissingValues ms = new
HalamanMissingValuesthis, rootPaneCheckingEnabled, model; ms.setVisibletrue;
i = model.getColumnCount - 1; break;
} }
} }
for int i = 0; i model.getColumnCount; i++ { seleksi_atribut = new SeleksiAtribut;
seleksi_atribut.setAtributmodel.getColumnNamei;
seleksi_atribut.setPilihfalse; cb_table.addi, seleksi_atribut;
} seleksiTable.setModelcb_table;
TableModel tableModel = dataPreprocessTable.getModel; tableDeteksiOutlier.setModeltableModel;
tableDeteksiOutlier.setAutoResizeModeJTable.AUTO_RESIZE_OFF; updateCellWidthtableDeteksiOutlier;
int baris = tableModel.getRowCount; jumlahBarisDeteksi.setText + baris;
} else if potong_nama_file[1].equalscsv { cb_table.removeRow2;
File fileCsv = fileChooser.getSelectedFile; Vector columnNames = new Vector;
Vector data = new Vector; String line;
try { BufferedReader br = new BufferedReadernew
FileReaderfileCsv; StringTokenizer st = new StringTokenizerbr.readLine, ,;
while st.hasMoreTokens { columnNames.addElementst.nextToken;
} while line = br.readLine = null {
StringTokenizer st2 = new StringTokenizerline, ,; Vector row = new Vector;
while st2.hasMoreTokens { row.addElementst2.nextToken;
} data.addElementrow;
} br.close;
DefaultTableModel model = new DefaultTableModeldata, columnNames;
dataPreprocessTable.setModelmodel; dataPreprocessTable.setAutoResizeModeJTable.AUTO_RESIZE_OFF;
updateCellWidthdataPreprocessTable; dataPreprocessTable.setAutoCreateRowSortertrue;
pathTextField.setTextfileCsv.getPath; barisTextField.setText + data.size;
atributTextField.setText + columnNames.size;
hasilDeteksiTextArea.setTextnull; hapusButton.setEnabledtrue;
distribusiButton.setEnabledtrue; submitDataButton.setEnabledtrue;
tandaiSemuaButton.setEnabledtrue; batalTandaiButton.setEnabledtrue;
for int i = 0; i model.getColumnCount; i++ { for int j = 0; j model.getRowCount; j++ {
if model.getValueAtj, i.toString.isEmpty || model.getValueAtj, i.toString.matches[0-9.]
|| model.getValueAtj, i.toString.matches[.] { JOptionPane.showMessageDialognull, Data Anda
tidak lengkap dan atau terdapat karakter bukan angka + \n + Silahkan periksa kembali data pada file asli;
i = model.getColumnCount - 1; break;
} }
} for int i = 0; i model.getColumnCount; i++ {
seleksi_atribut = new SeleksiAtribut; seleksi_atribut.setAtributmodel.getColumnNamei;
seleksi_atribut.setPilihfalse; cb_table.addi, seleksi_atribut;
} seleksiTable.setModelcb_table;
TableModel tableModel = dataPreprocessTable.getModel; tableDeteksiOutlier.setModeltableModel;
tableDeteksiOutlier.setAutoResizeModeJTable.AUTO_RESIZE_OFF; updateCellWidthtableDeteksiOutlier;
int baris = tableModel.getRowCount; jumlahBarisDeteksi.setText + baris;
} catch Exception e { }
} else { JOptionPane.showMessageDialognull, File yang Anda pilih
harus berformat .xls atau .csv; }
} }
private void updateCellWidthJTable table { adjustJTableRowSizestable;
for int i = 0; i table.getColumnCount; i++ {
adjustColumnSizestable, i, 2; }
} private void adjustJTableRowSizesJTable jTable {
for int row = 0; row jTable.getRowCount; row++ { int maxHeight = 0;
for int column = 0; column jTable.getColumnCount; column++ {
TableCellRenderer cellRenderer = jTable.getCellRendererrow, column;
Object valueAt = jTable.getValueAtrow, column; Component tableCellRendererComponent =
cellRenderer.getTableCellRendererComponentjTable, valueAt, false, false, row, column;
int heightPreferable = tableCellRendererComponent.getPreferredSize.height;
maxHeight = Math.maxheightPreferable, maxHeight; }
jTable.setRowHeightrow, maxHeight; }
} public void adjustColumnSizesJTable table, int column, int margin {
DefaultTableColumnModel colModel = DefaultTableColumnModel table.getColumnModel;
TableColumn col = colModel.getColumncolumn; int width;
TableCellRenderer renderer = col.getHeaderRenderer; if renderer == null {
renderer = table.getTableHeader.getDefaultRenderer; }
Component comp = renderer.getTableCellRendererComponenttable, col.getHeaderValue, false, false, 0, 0;
width = comp.getPreferredSize.width; for int r = 0; r table.getRowCount; r++ {
renderer = table.getCellRendererr, column; comp = renderer.getTableCellRendererComponenttable,
table.getValueAtr, column, false, false, r, column; int currentWidth = comp.getPreferredSize.width;
width = Math.maxwidth, currentWidth; }
width += 2 margin; col.setPreferredWidthwidth;
col.setWidthwidth; }
public void prosesDeteksi { String jumlah_baris = jumlahBarisDeteksi.getText;
String path = pathTextField.getText; if nilaiMTF.getText.isEmpty || dminTF.getText.isEmpty {
if nilaiMTF.getText.isEmpty { nilaiMTF.setBackgroundColor.red;
} if dminTF.getText.isEmpty {
dminTF.setBackgroundColor.red; }
JOptionPane.showMessageDialognull, Nilai M atau dmin tidak boleh kosong ;
} else { if nilaiMTF.getText.isEmpty
dminTF.getText.isEmpty { if nilaiMTF.getText.matches[0-9.] ||
dminTF.getText.matches[0-9.] { Double nilaiM = Double.parseDoublenilaiMTF.getText;
Double nilaiD = Double.parseDoubledminTF.getText; TableModel tableModel = tableDeteksiOutlier.getModel;
int kolom = tableModel.getColumnCount; int baris = tableModel.getRowCount;
ListDouble data_nilai = null; String label = ;
Graph_IndexBased g = new Graph_IndexBasedbaris; insert vertex
for int i = 0; i baris; i++ { data_nilai = new ArrayListDouble;
for int j = 0; j kolom; j++ { if j == 0 {
label = String.valueOftableModel.getValueAti, j; } else {
data_nilai.addDouble.parseDoubletableModel.getValueAti, j.toString;
} }
g.addVertexlabel, data_nilai; }
insert edge for int i = 0; i baris; i++ {
for int j = i + 1; j baris; j++ { if i = j {
g.addEdgei, j, g.euclideanDistancei, j;
} }
} hasilDeteksiTextArea.setTextg.displayOutliernilaiM, nilaiD,
jumlah_baris, tableDeteksiOutlier, path; prosesButton.setEnabledfalse;
nilaiMTF.setTextnull; dminTF.setTextnull;
nilaiMTF.requestFocus; simpanFileButton.setEnabledtrue;
} }
} }
public boolean cek_atribut_hapusString atribut, ListString hapus_atribut {
boolean cek = false; for int i = 0; i hapus_atribut.size; i++ {
if hapus_atribut.geti.equalsatribut { return cek = true;
} }
return cek; }
public boolean cek_atribut_kolomString atribut, Vector kolom { boolean cek = false;
for int i = 0; i kolom.size; i++ { if kolom.geti.equalsatribut {
return cek = true; }
} return cek;
} public void hapusAtribut {
TableModel model = dataPreprocessTable.getModel; ListString hapus_seleksi = new ArrayListString;
for int i = 0; i cb_table.getRowCount; i++ { if cb_table.getValueAti, 1.equalstrue {
hapus_seleksi.addcb_table.getValueAti, 0.toString; }
} int kolom = model.getColumnCount;
int baris = model.getRowCount; Vector namaKolom = new Vector;
Vector isiData = new Vector; for int k = 0; k cb_table.getRowCount; k++ {
if cek_atribut_hapuscb_table.getValueAtk, 0.toString, hapus_seleksi {
namaKolom.addElementcb_table.getValueAtk, 0; }
} for int a = 0; a baris; a++ {
Vector satu_baris = new Vector; for int b = 0; b kolom; b++ {
if cek_atribut_kolommodel.getColumnNameb.toString, namaKolom {
satu_baris.addElementmodel.getValueAta, b; }
} isiData.addElementsatu_baris;
} DefaultTableModel model_baru = new DefaultTableModelisiData,
namaKolom; dataPreprocessTable.setModelmodel_baru;
if isiData.isEmpty namaKolom.isEmpty { updateCellWidthdataPreprocessTable;
} dataPreprocessTable.setAutoCreateRowSortertrue;
barisTextField.setText + isiData.size; atributTextField.setText + namaKolom.size;
jumlahBarisDeteksi.setText + isiData.size; cb_table.removeRow;
if namaKolom.isEmpty { barisTextField.setTextnull;
atributTextField.setTextnull; jumlahBarisDeteksi.setTextnull;
submitDataButton.setEnabledfalse; batalTandaiButton.setEnabledfalse;
tandaiSemuaButton.setEnabledfalse; hapusButton.setEnabledfalse;
distribusiButton.setEnabledfalse; pathTextField.setTextnull;
} seleksi_atribut.setPilihfalse;
} public void tandaiSemuaAtribut {
for int i = 0; i cb_table.getRowCount; i++ { cb_table.setValueAttrue, i, 1;
} }
public void batalTandaiSemuaAtribut { for int i = 0; i cb_table.getRowCount; i++ {
cb_table.setValueAtfalse, i, 1; }
} public void simpanFile {
JFileChooser fileChooser = new JFileChoosernew FileD:; fileChooser.setFileFilternew FileNameExtensionFilterMicrosoft
Word .doc, doc; fileChooser.setFileFilternew FileNameExtensionFilterText
Documents .txt, txt; FileOutputStream file_output_stream;
int returnValue = fileChooser.showSaveDialogthis; if returnValue == JFileChooser.APPROVE_OPTION {
String filename = fileChooser.getSelectedFile.getPath; String extension = fileChooser.getFileFilter.getDescription;
File ff = new Filefilename; buat file output stream
if extension.equalsMicrosoft Word .doc { ff = new Filefilename + .doc;
} else if extension.equalsText Documents .txt { ff = new Filefilename + .txt;
} try {
file_output_stream = new FileOutputStreamff; } catch FileNotFoundException fe {
fe.printStackTrace; return;
} try {
String hasil_text_area = hasilDeteksiTextArea.getText; String[] potong_isi = hasil_text_area.split\\n;
FileWriter outFile = new FileWriterff; PrintWriter out = new PrintWriteroutFile, true;
for int i = 0; i potong_isi.length; i++ { out.println + potong_isi[i].toString;
} file_output_stream.close;
} catch IOException ie { JOptionPane.showMessageDialogthis, Penyimpanan asil
Deteksi Outlier Gagal ; }
JOptionPane.showMessageDialogthis, Hasil Deteksi Outlier Telah Berhasil Disimpan di + filename;
} simpanFileButton.setEnabledfalse;
} Variables declaration - do not modify
private javax.swing.JLabel DLabel; private javax.swing.JLabel MLabel;
private javax.swing.JTextField atributTextField; private javax.swing.JButton bantuanButton;
private javax.swing.JTextField barisTextField; private javax.swing.JButton batalTandaiButton;
private javax.swing.JTable dataPreprocessTable; private javax.swing.JPanel deteksiPanel;
private javax.swing.JButton distribusiButton; private javax.swing.JTextField dminTF;
private javax.swing.JButton fileButton; private javax.swing.JButton hapusButton;
private javax.swing.JTextArea hasilDeteksiTextArea; private javax.swing.JLabel hasilLabel;
private javax.swing.JDesktopPane jDesktopPane1; private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2; private javax.swing.JPanel jPanel3;
private javax.swing.JScrollPane jScrollPane1; private javax.swing.JScrollPane jScrollPane2;
private javax.swing.JScrollPane jScrollPane4; private javax.swing.JScrollPane jScrollPane5;
private javax.swing.JSeparator jSeparator1; private javax.swing.JSeparator jSeparator2;
private javax.swing.JSeparator jSeparator3; private javax.swing.JSeparator jSeparator4;
private javax.swing.JTabbedPane jTabbedPane1; private javax.swing.JLabel judulLabel;
private javax.swing.JLabel jumlahAtributLabel; private javax.swing.JTextField jumlahBarisDeteksi;
private javax.swing.JLabel jumlahDataLabel; private javax.swing.JLabel jumlahLabel;
private javax.swing.JButton keluarButton; private javax.swing.JTextField nilaiMTF;
private javax.swing.JLabel pathLabel; private javax.swing.JTextField pathTextField;
private javax.swing.JButton pilihDBButton; private javax.swing.JPanel preprocessPanel;
private javax.swing.JButton prosesButton; private javax.swing.JLabel prosesLabel;
private javax.swing.JLabel seleksiAtributLabel; private javax.swing.JTable seleksiTable;
private javax.swing.JButton simpanFileButton; private javax.swing.JButton submitDataButton;
private javax.swing.JLabel tabel2Label; private javax.swing.JLabel tabelLabel;
private javax.swing.JTable tableDeteksiOutlier; private javax.swing.JButton tandaiSemuaButton;
}
Listing Program 5.6 Kelas HalamanUtama.java