Witam, poszukuje osoby która by mi pomogła zrobić specyfikacje mojego projektu. Chodzi mi o arkusz kalkulacyjny który mam juz napisany w Javie. Gdyby był ktoś chętny mi pomoć oto kod programu.
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.table.*;
public class SpreadSheet extends JFrame {
// ********************************************************
class RowHeaderRenderer extends JLabel implements TableCellRenderer {
RowHeaderRenderer(JTable table) {
JTableHeader header = table.getTableHeader();
setOpaque(true);
setBorder(UIManager.getBorder("TableHeader.cellBorder"));
setHorizontalAlignment(CENTER);
setForeground(header.getForeground());
setBackground(header.getBackground());
setFont(header.getFont());
}
@Override
public Component getTableCellRendererComponent(JTable table,
Object value, boolean isSelected, boolean hasFocus, int row,
int column) {
this.setText((row + 1) + "");
return this;
}
}
// *********************************************************
class SimpleTableModel extends DefaultTableModel {
Formula2 formula = new Formula2();
public SimpleTableModel(int rowCount, int columnCount) {
super(rowCount, columnCount);
}
@Override
public Object getValueAt(int row, int column)
{
return formula.getValue(getKey(row, column));
}
public Object getFormula(int row, int column)
{
return formula.getFormula(getKey(row,column));
}
@Override
public void setValueAt(Object value, int row, int column)
{
formula.define(getKey(row,column),value.toString());
table.repaint();
}
public void reset()
{
formula.clear();
model.setRowCount(0);
model.setRowCount(ROW_COUNT);
}
public Properties getProperties()
{
return formula.getProperties();
}
String getKey(int row, int column)
{
return Character.toString((char) (column + 65)) + "" + (row + 1);
}
}
// *********************************************************
final int ROW_COUNT = 50;
final int COLUMN_COUNT = 25;
JTable table;
JTable rowHead;
SimpleTableModel model;
JTextField evalField;
public SpreadSheet() {
super("Arkusz Kalkulacyjny");
zrobGUI();
podlaczZadzenia();
zerujTabele();
this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
this.setVisible(true);
}
private void zerujTabele() {
model.reset();
}
private void zapisz() {
JFileChooser fc = new JFileChooser();
int zwrwartosc = fc.showSaveDialog(null); // do zapisu
if (zwrwartosc == JFileChooser.APPROVE_OPTION)
{
File outFile = fc.getSelectedFile(); // pobiera ścieżkę pliku
Properties props = model.getProperties();
try
{
props.store(new FileOutputStream(outFile),"SpreadSheet");
}
catch (Exception e)
{
System.out.println(e);
}
}
}
private void odczataj() {
JFileChooser fc = new JFileChooser();
int zwrwartosc = fc.showOpenDialog(null); // do zapisu
// pobiera ścieżkę pliku
if (zwrwartosc == JFileChooser.APPROVE_OPTION)
{
zerujTabele();
File inFile = fc.getSelectedFile();
try {
Properties props = model.getProperties();
props.load(new FileInputStream(inFile));
} catch (Exception e) {
System.out.println(e);
}
}
}
public void Autorzy() {
JDialog nowe = new JDialog(this,"Autorzy",true);
nowe.setResizable(false);
nowe.setLayout(new GridLayout(4,1));
nowe.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
nowe.add(new JLabel("1. Emil Jędrzejewski"));
nowe.add(new JLabel("2. Przemysław Oleksiak"));
nowe.add(new JLabel("3. Daniel Dzięgielewski"));
nowe.add(new JLabel("4. Rafał Kostka"));
nowe.pack();
Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
// Determine the new location of the window
int w = nowe.getSize().width;
int h = nowe.getSize().height;
int x = (dim.width - w) / 2;
int y = (dim.height - h) / 2;
// Move the window
nowe.setLocation(x, y);
nowe.setVisible(true);
}
private void addMenuItem(JMenu menu,String title, ActionListener actionListener){
JMenuItem mi = new JMenuItem(title);
mi.setText(title);
mi.addActionListener(actionListener);
menu.add(mi);
}
private void zrobGUI() {
JMenuBar mb = new JMenuBar();
JMenu menu = new JMenu("Plik");
menu.addSeparator();
addMenuItem(menu,"Zapisz",new ActionListener() {
public void actionPerformed(ActionEvent event) {
zapisz();
}
});
addMenuItem(menu,"Otworz",new ActionListener() {
public void actionPerformed(ActionEvent event) {
odczataj();
}
});
menu.addSeparator();
addMenuItem(menu,"Koniec",new ActionListener() {
public void actionPerformed(ActionEvent event) {
System.exit(0);
}
});
mb.add(menu);
JMenu menu2 = new JMenu("Tabela");
addMenuItem(menu2,"Nowa",new ActionListener() {
public void actionPerformed(ActionEvent event) {
zerujTabele();
}
});
mb.add(menu2);
JMenu menu1 = new JMenu("O programie");
addMenuItem(menu1,"Autorzy",new ActionListener() {
public void actionPerformed(ActionEvent e) {
Autorzy();
}
});
mb.add(menu1);
table = new JTable();
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
model = new SimpleTableModel(ROW_COUNT, COLUMN_COUNT);
table.setModel(model);
rowHead = new JTable();
rowHead.setModel(new DefaultTableModel(ROW_COUNT, 1));
LookAndFeel.installColorsAndFont(rowHead, "TableHeader.background",
"TableHeader.foreground", "TableHeader.font");
rowHead.setIntercellSpacing(new Dimension(0, 0));
Dimension d = rowHead.getPreferredScrollableViewportSize();
d.width = rowHead.getPreferredSize().width;
rowHead.setPreferredScrollableViewportSize(d);
rowHead.setRowHeight(table.getRowHeight());
rowHead.setDefaultRenderer(Object.class, new RowHeaderRenderer(table));
JScrollPane sp = new JScrollPane(table);
sp.setRowHeaderView(rowHead);
add(sp, BorderLayout.CENTER);
JPanel editPanel = new JPanel();
editPanel.setLayout(new FlowLayout(FlowLayout.LEFT));
editPanel.add(new JLabel("Fromula:"));
evalField = new JTextField();
evalField.setColumns(50);
editPanel.add(evalField);
setJMenuBar(mb);
add(editPanel, BorderLayout.NORTH);
pack();
this.setLocationRelativeTo(null);
}
private void podlaczZadzenia() {
ListSelectionListener listener = new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent e) {
int col = table.getSelectedColumn();
int row = table.getSelectedRow();
if (col < 0 || row < 0)
return;
evalField.setText(model.getFormula(row, col) + "");
}
};
table.getColumnModel().getSelectionModel().addListSelectionListener(
listener);
table.getSelectionModel().addListSelectionListener(listener);
evalField.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
int key = e.getKeyCode();
if (key == KeyEvent.VK_ENTER) {
int col = table.getSelectedColumn();
int row = table.getSelectedRow();
if (col < 0 || row < 0)
return;
model.setValueAt(evalField.getText(), row, col);
}
}
});
}
public static void main(String[] args) {
new SpreadSheet();
}
}