Percorrer valores da Table

Pessoal, estou com uma dúvida simples.

Como poderia percorrer os valores de uma tabela.
como exemplo, usei o código do link abaixo:
http://www.java2s.com/Tutorial/Java/0280__SWT/Editthetextofatableiteminplace.htm

import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.TableEditor;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.swt.widgets.TableItem;
import org.eclipse.swt.widgets.Text;

public class TableItemEditor {

  public static void main(String[] args) {
    Display display = new Display();
    Shell shell = new Shell(display);
    shell.setLayout(new FillLayout());
    final Table table = new Table(shell, SWT.FULL_SELECTION | SWT.HIDE_SELECTION);
    TableColumn column1 = new TableColumn(table, SWT.NONE);
    TableColumn column2 = new TableColumn(table, SWT.NONE);
    for (int i = 0; i < 10; i++) {
      TableItem item = new TableItem(table, SWT.NONE);
      item.setText(new String[] { "item " + i, "edit this value" });
    }
    column1.pack();
    column2.pack();

    final TableEditor editor = new TableEditor(table);
    // The editor must have the same size as the cell and must
    // not be any smaller than 50 pixels.
    editor.horizontalAlignment = SWT.LEFT;
    editor.grabHorizontal = true;
    editor.minimumWidth = 50;
    // editing the second column
    final int EDITABLECOLUMN = 1;

    table.addSelectionListener(new SelectionAdapter() {
      public void widgetSelected(SelectionEvent e) {
        // Clean up any previous editor control
        Control oldEditor = editor.getEditor();
        if (oldEditor != null)
          oldEditor.dispose();

        // Identify the selected row
        TableItem item = (TableItem) e.item;
        if (item == null)
          return;

        // The control that will be the editor must be a child of the Table
        Text newEditor = new Text(table, SWT.NONE);
        newEditor.setText(item.getText(EDITABLECOLUMN));
        newEditor.addModifyListener(new ModifyListener() {
          public void modifyText(ModifyEvent me) {
            Text text = (Text) editor.getEditor();
            editor.getItem().setText(EDITABLECOLUMN, text.getText());
          }
        });
        newEditor.selectAll();
        newEditor.setFocus();
        editor.setEditor(newEditor, item, EDITABLECOLUMN);
      }
    });
    shell.setSize(300, 300);
    shell.open();

    while (!shell.isDisposed()) {
      if (!display.readAndDispatch())
        display.sleep();
    }
    display.dispose();
  }

}

Gostaria de pegar todos os valores e salvar em um arquivo texto.

Obrigado

É só você pegar a lista do seu TableModel e ir percorrendo cada valor.

fasts, no exemplo acima qual o objeto que seria o TableModel?

Nenhum deles.
Você tem que implementar o seu próprio (veja no link da minha assinatura). Então você só chama um método que retorna a lista de objetos da JTable.

Ou faz da forma mais difícil e não “reaproveitável”. Faz dois loops. Um de 0 até a quantidade de linhas, outro de 0 até a quantidade de colunas e vai pegando o objeto com getValueAt(linha, coluna).

[quote=fasts]Nenhum deles.
Você tem que implementar o seu próprio (veja no link da minha assinatura). Então você só chama um método que retorna a lista de objetos da JTable.

Ou faz da forma mais difícil e não “reaproveitável”. Faz dois loops. Um de 0 até a quantidade de linhas, outro de 0 até a quantidade de colunas e vai pegando o objeto com getValueAt(linha, coluna).[/quote]

Eu não uso JTable, uso o componente Table mesmo, por conta que é uma aplicação Eclipse RCP.

Os objetos não tem um método que exatamente me retorna uma lista com os valores atuais do TableEditor e nem Table.

Perdão, cara.
Tô tão acostumado a ver apenas dúvidas de swing e nem reparei que era SWT.

[quote=fasts]Perdão, cara.
Tô tão acostumado a ver apenas dúvidas de swing e nem reparei que era SWT.[/quote]

Opa sem problema…
Tem alguma ideia de como percorrer esses valores?

import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.CCombo;
import org.eclipse.swt.custom.TableEditor;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.swt.widgets.TableItem;
import org.eclipse.swt.widgets.Text;

public class Editor {
	private static Table table;
	private static TableEditor editor;
	
	public static void main(String[] args) {
		Display display = new Display();
		Shell parent = new Shell(display);
		
		createTable(parent);
		
		parent.open();
		while (!parent.isDisposed()) {
			if (!display.readAndDispatch())
				display.sleep();
		}

		display.dispose();
	}

	private static void createTable(Shell parent) {
		table = new Table (parent, SWT.BORDER | SWT.MULTI);
		table.setLinesVisible(true);
		table.setHeaderVisible(true);
		
		TableColumn column = null;
		for(String col : new String[] { "Combo", "Text"}){
			column = new TableColumn(table, SWT.NONE);
			column.setText(col);
			column.pack();
		}

		for (int i=0; i<2; i++) {
			new TableItem (table, SWT.NONE);
		}
		
		TableItem [] items = table.getItems ();		
		for (int i=0; i<items.length; i++) {
			editor = new TableEditor (table);
			CCombo typeCombo = new CCombo (table, SWT.NONE);
			typeCombo.setText("");
			typeCombo.setEditable(false);
			
			for(String type: new String[]{"","1","2","3","4"}){
				typeCombo.add(type);
			}
			typeCombo.addModifyListener(new ModifyListener() {
				@Override
				public void modifyText(ModifyEvent e) {
					showValues();
				}
			});
			editor.grabHorizontal = true;
			editor.setEditor(typeCombo, items[i], 0);
			
			
			editor = new TableEditor (table);
			Text shortNameText= new Text (table, SWT.NONE);
			shortNameText.setText("");
			shortNameText.addModifyListener(new ModifyListener() {
				@Override
				public void modifyText(ModifyEvent arg0) {	
					showValues();
				}
			});
			editor.grabHorizontal = true;
			editor.setEditor(shortNameText, items[i], 1);
			
			Color editorColor = shortNameText.getBackground();
			typeCombo.setBackground(editorColor);

		}
		table.pack();
		
	}

	protected static void showValues() {
		System.out.println("[showValues]");
		// TODO Percorrer e mostrar no console valores preenchidos na table ou tableEditor
	}
}

Acho que uma forma mais fácil de mostrar o que não estou conseguindo fazer, é mostrando o código acima, aonde toda vez que tiver alteração em uma das células eu preciso imprimir no console os valores da table ou editor.

Alguém tem ideia de como fazer a implementação do metodo showValues()?

Obrigado.