Olá.
eu estou a fazer uma planilha eletronica e estou com um problema na solução mais simples que eu achei [ainda estou com problema no começo mais mesmo assim acho que vai ser simples]
seguinte, eu tenho o JTextField Texto1 que vai me dar informações para fazer uma conta como por exemplo: A1+A2 onde vai pegar informações da tabela e soma-las.
porem eu como a tabela é meio grande (30x7) é meio complicado fazer um por um então estou tentando fazer em arrays
exemplo: A1+A2
separa em 2 ou 3 Strings
com os valores:A1,+,A2
e checar o array da String no caso pra ver se possue A1 no Array e então botar no caso A1 = 13(exemplo) e pegar o A2 tambem e então fazer a conta.
tentei de uma maneira como fazer um split no + porem da erro e eu não sei o motivo[ainda esta o codigo ai].
por isso estou aqui pedindo ajuda.
alguem sabe como fazer isso funcionar direito?
qualquer coisa é bem vinda.
import javax.swing.JButton;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JMenu;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JFrame;
import javax.swing.JFileChooser;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.KeyStroke;
import javax.swing.border.LineBorder;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;
import javax.swing.JTable;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.KeyEvent;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class Planilha extends JFrame implements ActionListener{
/**
*
*/
private static final long serialVersionUID = 1L;
JMenuBar Bar;
JMenu Arquivo;
JMenuItem Save,Load,New,Exit;
JTextField Texto1;
boolean soNum;
String[] Colunas =
{"A","B","C","D","E","F","G"};
String[][] data;
JButton Calcular;
JPanel a,b;
Container c;
JFileChooser JFC = new JFileChooser();
File arq;
TableModel modelo = new DefaultTableModel (data,Colunas);
public Planilha(){
//News
Bar = new JMenuBar();
Arquivo = new JMenu("Arquivo");
Save = new JMenuItem("Salvar");
Load = new JMenuItem("Abrir");
New = new JMenuItem("Novo");
Exit = new JMenuItem("Sair");
Texto1 = new JTextField("");
Calcular = new JButton("Calcular");
a = new JPanel();
b = new JPanel();
c = getContentPane();
final JTable Tabela = new JTable(modelo);
JScrollPane scroll = new JScrollPane(Tabela);
//News
//Sets
Tabela.setPreferredScrollableViewportSize(new Dimension(500,400));
Tabela.setFillsViewportHeight(true);
((DefaultTableModel) modelo).setNumRows(30);
New.addActionListener(this);
New.setMnemonic(KeyEvent.VK_N);
New.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,ActionEvent.CTRL_MASK));
Save.addActionListener(this);
Save.setMnemonic(KeyEvent.VK_S);
Save.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,ActionEvent.CTRL_MASK));
Load.addActionListener(this);
Load.setMnemonic(KeyEvent.VK_A);
Load.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,ActionEvent.CTRL_MASK));
Exit.addActionListener(this);
Exit.setMnemonic(KeyEvent.VK_R);
Exit.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F4,ActionEvent.ALT_MASK));
Calcular.addActionListener(this);
a.setLayout(new BorderLayout());
a.add(Bar,BorderLayout.NORTH);
a.setBorder(new LineBorder(Color.BLACK,2));
a.add(Texto1);
a.add(Calcular,BorderLayout.EAST);
b.setLayout(new GridLayout(0,1));
b.add(scroll);
c.setLayout(new BorderLayout());
c.add(a,BorderLayout.NORTH);
c.add(b,BorderLayout.CENTER);
//Sets
pack();
setVisible(true);
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
setJMenuBar(Bar);
Bar.add(Arquivo);
Arquivo.add(New);
Arquivo.add(Load);
Arquivo.add(Save);
Arquivo.addSeparator();
Arquivo.add(Exit);
}
final public boolean soNum(){
String s = Texto1.getText();
for(int i=0;i<s.length();i++){
if (!Character.isDigit(s.charAt(i))){
return false;
}
}
return true;
}
public void actionPerformed(ActionEvent e) {
Object Item = e.getSource();
String calculo = Texto1.getText();
if (Item == New){
new Planilha();
}else if(Item == Save){
int Aceita = JFC.showSaveDialog(Planilha.this);
if (Aceita == JFileChooser.APPROVE_OPTION){
getTabela(modelo);
}
}else if (Item == Load){
int Aceita = JFC.showOpenDialog(Planilha.this);
if (Aceita == JFileChooser.APPROVE_OPTION){
OrganizaTabela();
}
}else if(Item == Exit){
dispose();
}else if(Item == Calcular){ //ERRO
calculo.trim();//ERRO
String[] separa = calculo.split("+");//ERRO
System.out.println(separa[0]);//ERRO
System.out.println(separa[1]);//ERRO
}
}
public void getTabela(TableModel modelo){
String Texto = "";
StringBuffer temp = new StringBuffer();
for (int i = 0;i<modelo.getRowCount();i++){
String tabA = (String) modelo.getValueAt(i, 0);
String tabB = (String) modelo.getValueAt(i, 1);
String tabC = (String) modelo.getValueAt(i, 2);
String tabD = (String) modelo.getValueAt(i, 3);
String tabE = (String) modelo.getValueAt(i, 4);
String tabF = (String) modelo.getValueAt(i, 5);
String tabG = (String) modelo.getValueAt(i, 6);
if (tabA == null){
tabA = " ";
}
if (tabB == null){
tabB = " ";
}
if (tabC == null){
tabC = " ";
}
if (tabD == null){
tabD = " ";
}
if (tabE == null){
tabE = " ";
}
if (tabF == null){
tabF = " ";
}
if (tabG == null){
tabG = " ";
}
temp.append(tabA+";"+tabB+";"+tabC+";"+tabD+";"+tabE+";"+tabF+";"+tabG+";");
}
Texto = temp.toString();
Gravar(Texto);
System.out.print(Texto);
}
public void Gravar(String text){
arq = JFC.getSelectedFile();
try {
BufferedWriter buff = new BufferedWriter(new FileWriter(arq));
buff.write(text);
buff.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public String Abre(){
String text = "";
StringBuffer temp = new StringBuffer();
arq = JFC.getSelectedFile();
try{
if(arq.exists()){
BufferedReader ler = new BufferedReader(new FileReader(arq));
boolean fim = false;
while (!fim){
String Linha = ler.readLine();
if (Linha == null){
fim = true;
}else{
temp.append(Linha);
System.out.println(temp);
}
text = temp.toString();
ler.close();
}
}else{
JOptionPane.showMessageDialog(null, "Arquivo Inexistente","Ok",JOptionPane.INFORMATION_MESSAGE);
}
} catch (IOException e) {
e.printStackTrace();
}
((DefaultTableModel) modelo).setNumRows(0);
return text;
}
public void OrganizaTabela(){
String info = Abre();
System.out.println(info);
String[] sepinfo = info.split(";");
String[][] data = new String[sepinfo.length/modelo.getColumnCount()][modelo.getColumnCount()];
for (int i=0,j=0;i<sepinfo.length-1;i+=7,j++){
data[j][0] = sepinfo[i];
data[j][1] = sepinfo[i+1];
data[j][2] = sepinfo[i+2];
data[j][3] = sepinfo[i+3];
data[j][4] = sepinfo[i+4];
data[j][5] = sepinfo[i+5];
data[j][6] = sepinfo[i+6];
((DefaultTableModel) modelo).addRow(data[j]);
}
}
public static void main(String[]args){
new Planilha();
}
}
Shogogan
