Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    [Java] tabella corrispondente a matrice

    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

  2. #2
    Utente di HTML.it L'avatar di bobc
    Registrato dal
    Feb 2004
    Messaggi
    245
    Se non vuoi usare l'interfaccia grafica, l'unico modo è quello di mettere caratteri tipo | oppure ___ .

    Altrimenti dovrai documentarti sulle JTable

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,315
    Così?
    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();
    }
    Ciao.
    "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

  4. #4
    grazie lele

    se volessi anche usare l interfacca grafica?
    ho cercato esempi cn jtable ma nn ho capito molto.....

  5. #5
    Utente di HTML.it L'avatar di bobc
    Registrato dal
    Feb 2004
    Messaggi
    245
    Prova a dare un'occhiata qui:

    www.mokabyte.it/2002/04/jtable.htm

  6. #6
    Grazie 1000!!!

  7. #7
    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?

  8. #8
    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?
    Una matrice di che cosa? Di oggetti o tipi primitivi?
    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.)

  9. #9
    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

  10. #10
    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
    codice:
    JTable myTable = new JTable();
    DefaultTableModel myModel = new DefaultTableModel(S,columnNames);
    myTable.setModel(myModel);
    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:
    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.)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.