Salve a tutti
ho fatto un piccolo programma che lavora su 2 matrici.
Vorrei visualizzare a video i dati delle matrici sotto forma di tabella.Avete suggerimenti?
grazie
Salve a tutti
ho fatto un piccolo programma che lavora su 2 matrici.
Vorrei visualizzare a video i dati delle matrici sotto forma di tabella.Avete suggerimenti?
grazie
Se non vuoi usare l'interfaccia grafica, l'unico modo è quello di mettere caratteri tipo | oppure ___ .
Altrimenti dovrai documentarti sulle JTable
Così?
Ciao.codice:for (int i=0; i<matrice.length; i++) { for (int j=0; i<matrice[i].length; i++) { System.out.print(matrice[i][j] + "\t"); } System.out.println(); }![]()
"Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza
grazie lele
se volessi anche usare l interfacca grafica?
ho cercato esempi cn jtable ma nn ho capito molto.....
Prova a dare un'occhiata qui:
www.mokabyte.it/2002/04/jtable.htm
Grazie 1000!!!
ho trovato questo esempio:
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.table.TableCellRenderer;
import javax.swing.JFrame;
import javax.swing.JTable;
public class TableCellExample
{
public static void main( String[] args )
{
JTable table = new JTable( new ExampleTableModel() );
TableCellRenderer renderer = new CustomTableCellRenderer();
try
{
table.setDefaultRenderer( Class.forName
( "java.lang.Integer" ), renderer );
}
catch( ClassNotFoundException ex )
{
System.exit( 0 );
}
JFrame frame = new JFrame();
frame.addWindowListener(
new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
}
);
frame.getContentPane().add( table );
frame.pack();
frame.setVisible( true );
}
}
import java.awt.Component;
import java.awt.Color;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;
public class CustomTableCellRenderer extends DefaultTableCellRenderer
{
public Component getTableCellRendererComponent
(JTable table, Object value, boolean isSelected,
boolean hasFocus, int row, int column)
{
Component cell = super.getTableCellRendererComponent
(table, value, isSelected, hasFocus, row, column);
if( value instanceof Integer )
{
Integer amount = (Integer) value;
if( amount.intValue() < 0 )
{
cell.setBackground( Color.red );
// You can also customize the Font and Foreground this way
// cell.setForeground();
// cell.setFont();
}
else
{
cell.setBackground( Color.white );
}
}
return cell;
}
}
import javax.swing.table.AbstractTableModel;
public class ExampleTableModel extends AbstractTableModel
{
private final String[] columnNames = { "Month", "Income", };
final Object[][] data = {
{"January", new Integer(150) },
{"February", new Integer(500) },
{"March", new Integer(54) },
{"April", new Integer(-50) },
{"May", new Integer(52) },
{"June", new Integer(74) },
{"July", new Integer(-25) },
{"August", new Integer(62) },
{"September", new Integer(15) },
{"October", new Integer(-5) },
{"November", new Integer(5) },
{"December", new Integer(59) }
};
public Class getColumnClass( int column )
{
return getValueAt(0, column).getClass();
}
public int getColumnCount()
{
return columnNames.length;
}
public String getColumnName( int column )
{
return columnNames[column];
}
public int getRowCount()
{
return data.length;
}
public Object getValueAt( int row, int column )
{
return data[row][column];
}
}
come posso passare i dati creati da una matrice invece che metterli all interno della classe?
Una matrice di che cosa? Di oggetti o tipi primitivi?Originariamente inviato da corona-extra85
ho trovato questo esempio:
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.table.TableCellRenderer;
import javax.swing.JFrame;
import javax.swing.JTable;
public class TableCellExample
{
public static void main( String[] args )
{
JTable table = new JTable( new ExampleTableModel() );
TableCellRenderer renderer = new CustomTableCellRenderer();
try
{
table.setDefaultRenderer( Class.forName
( "java.lang.Integer" ), renderer );
}
catch( ClassNotFoundException ex )
{
System.exit( 0 );
}
JFrame frame = new JFrame();
frame.addWindowListener(
new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
}
);
frame.getContentPane().add( table );
frame.pack();
frame.setVisible( true );
}
}
import java.awt.Component;
import java.awt.Color;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;
public class CustomTableCellRenderer extends DefaultTableCellRenderer
{
public Component getTableCellRendererComponent
(JTable table, Object value, boolean isSelected,
boolean hasFocus, int row, int column)
{
Component cell = super.getTableCellRendererComponent
(table, value, isSelected, hasFocus, row, column);
if( value instanceof Integer )
{
Integer amount = (Integer) value;
if( amount.intValue() < 0 )
{
cell.setBackground( Color.red );
// You can also customize the Font and Foreground this way
// cell.setForeground();
// cell.setFont();
}
else
{
cell.setBackground( Color.white );
}
}
return cell;
}
}
import javax.swing.table.AbstractTableModel;
public class ExampleTableModel extends AbstractTableModel
{
private final String[] columnNames = { "Month", "Income", };
final Object[][] data = {
{"January", new Integer(150) },
{"February", new Integer(500) },
{"March", new Integer(54) },
{"April", new Integer(-50) },
{"May", new Integer(52) },
{"June", new Integer(74) },
{"July", new Integer(-25) },
{"August", new Integer(62) },
{"September", new Integer(15) },
{"October", new Integer(-5) },
{"November", new Integer(5) },
{"December", new Integer(59) }
};
public Class getColumnClass( int column )
{
return getValueAt(0, column).getClass();
}
public int getColumnCount()
{
return columnNames.length;
}
public String getColumnName( int column )
{
return columnNames[column];
}
public int getRowCount()
{
return data.length;
}
public Object getValueAt( int row, int column )
{
return data[row][column];
}
}
come posso passare i dati creati da una matrice invece che metterli all interno della classe?
Il centro dell'attenzione non è sempre un buon posto in cui trovarsi
Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)
public void actionPerformed (ActionEvent event)
{
Object source = event.getSource(); //Bottone CALCOLA
if(source == b){
s1 = text.getText();
s2 = text2.getText();
if(s1.equals("") || s2.equals("")){
JOptionPane.showMessageDialog(null,"Devi inserire entrambe le stringhe!");}
else{
LCS lcs1 = new LCS(s1,s2);
int mat[][]=new int[s1.length()][s2.length()];
mat=lcs1.AlgoritmoLCS(s1,s2);
text3.setText(Integer.toString(mat[s1.length()][s2.length()]));
text4.setText(lcs1.stampaLCS(s1,s2));
}
}
else if(source == c) //Bottone ESCI
{
System.exit(0);
}
else if(source == d) //Bottone MATRICE
{
s1 = text.getText();
s2 = text2.getText();
if (s1.length()==0 || s2.length()==0){
JOptionPane.showMessageDialog(null,"Impossibile creare la matrice!");
}
else{
a questo punto vorrei creare una tabella dove visualizzare la matrice S[i][j] creata
Ma perchè non usi i tag CODE?
Comunque è semplice, butta via la parte relativa al table model del codice del tuo esempio (la classe che estende abstract table model per intenderci) e dall'eseterno quando devi creare la JTable fai qualcosa del tipo
Il tutto supponendo che S sia un vettore bidimensionale le cui righe sono vettori monodimesionali di oggetti (cioè non di tipi primitivi del tipo int,boolean etc...) e che columnNames sia un nettore di oggetti stringa del tipo:codice:JTable myTable = new JTable(); DefaultTableModel myModel = new DefaultTableModel(S,columnNames); myTable.setModel(myModel);
codice:String[] columnNames = new String[]{"Colonna1","Colonna2",....};
Il centro dell'attenzione non è sempre un buon posto in cui trovarsi
Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)