package name;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSplitPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;
import java.util.Vector;
import java.io.*;
public class Prak2 extends JPanel implements ActionListener {
/**
*
*/
private static final long serialVersionUID = 5236358216514693847L;
private final JButton chooseBtn;
private final JButton loadBtn;
private final JTextField fileField;
private final JFileChooser fc = new JFileChooser();
private final JTable table = new JTable();
Prak2() {
// set layout
final BorderLayout borderLayout = new BorderLayout();
setLayout(borderLayout);
// create SplitPane
final JSplitPane sp = new JSplitPane();
sp.setOrientation(JSplitPane.VERTICAL_SPLIT);
add(BorderLayout.NORTH, sp);
// create top panel
final JPanel top = new JPanel();
final FlowLayout topLayout = new FlowLayout();
topLayout.setAlignment(FlowLayout.LEFT);
top.setLayout(topLayout);
// create line for loading a file
top.add(getJLabel("File"));
fileField = getJTextField(new Dimension(100, 20));
top.add(fileField);
chooseBtn = getJButton("", new Dimension(20, 20));
top.add(chooseBtn);
loadBtn = getJButton("Load", new Dimension(75, 20));
top.add(loadBtn);
sp.setLeftComponent(top);
// create bottom panel
sp.setRightComponent(table);
}
private void createTable(final Object[] cols, final Object[][] data) {
final DefaultTableModel mod = new DefaultTableModel(data, cols);
table.setModel(mod);
mod.fireTableStructureChanged();
}
public void actionPerformed(final ActionEvent e) {
if(e.getSource() == chooseBtn) {
final int retVal = fc.showOpenDialog(this);
if(retVal == JFileChooser.APPROVE_OPTION) {
fileField.setText(fc.getSelectedFile().getPath());
} else {
// cmd cancelled by user
}
} else if(e.getSource() == loadBtn) {
try {
final FileInputStream fis = new FileInputStream(fileField.getText());
final DataInputStream dis = new DataInputStream(fis);
final BufferedReader br = new BufferedReader(new InputStreamReader(dis));
final String a = br.readLine();
final String b[] = a.split("\t");
final Vector<String[]> data = new Vector<String[]>();
String strLine;
while((strLine = br.readLine()) != null) {
data.add(new String(strLine).split(("\t")));
}
Object[][] dat = new Object[data.size()][];
for(int i = 0; i < data.size(); i++) {
dat[i] = data.get(i);
}
createTable(b, dat);
} catch(final FileNotFoundException ex) {
ex.printStackTrace();
} catch(final IOException ex) {
ex.printStackTrace();
}
}
}
/**
* creates and returns a handle to a JLabel
* @param text: label text
* @return: a handle to the label
*/
private JLabel getJLabel(final String text) {
return new JLabel(text);
}
/**
* creates and returns a handle to a JTextField
* @param dim: preferred size
* @return: a handle to the textfield
*/
private JTextField getJTextField(final Dimension dim) {
final JTextField tf = new JTextField();
tf.setPreferredSize(dim);
return tf;
}
/**
* creates and returns a handle to a JButton
* @param text: button text
* @param dim: preferred size
* @return: a handle to the button
*/
private JButton getJButton(final String text, final Dimension dim) {
final JButton btn = new JButton(text);
btn.setPreferredSize(dim);
btn.addActionListener(this);
return btn;
}
/**
* creates and shows the GUI
*/
private static void createAndShowGUI() {
//Create and set up the window.
final JFrame mainFrame = new JFrame("Name");
mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mainFrame.setExtendedState(mainFrame.MAXIMIZED_BOTH);
final Prak2 content = new Prak2();
mainFrame.setContentPane(content);
//Display the window.
mainFrame.setVisible(true);
}
/**
* @param args
*/
public static void main(final String[] args) {
createAndShowGUI();
}
}