Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    [JAVA] ma perchè colorare le celle di una jtable è così difficile?

    Allora, ho questo problema:
    Devo costruire una jtable in cui vado a inserire dei valori....clicco un bottone e i valori inseriti devono essere ordinati in maniera crescente e ad ogni passo devo colorare in maniera differente le celle ordinate da quelle non ordinate.
    Ho fatto quasi tutto, ma non capisco perchè non riesco a gestire la parte relativa ai colori....chi mi da una mano?

    codice:
    import java.applet.Applet;
    import javax.swing.*;
    import javax.swing.text.*;
    import javax.swing.Timer;
    import javax.swing.event.*;
    import java.awt.*;
    import java.awt.event.*;
    import java.io.*;
    import java.util.*;
    import javax.swing.border.Border;
    import javax.swing.border.TitledBorder;
    import javax.swing.filechooser.FileFilter;
    
    import javax.swing.table.*;
    import javax.swing.JPanel.*;
    
    
    
    public class Ordinamento extends JFrame 
    {
    
    
    JPanel pannelloOrdinamento = new JPanel();
    private JTable miaTab = new JTable();
    private JPanel mioPane = new JPanel();
    private JPanel mioPaneB = new JPanel();
    JButton ordinaB;
    JTextField testoCustom = new JTextField();
    int[] mioarray = new int[50];
    int numRighe = 5;
    int numColonne = 10;
    int contaPassi = 0;
      int rigaC;
      int colonnaC;
      
    RenderRedGreen mioRender = new RenderRedGreen()  ;
    
    final class RenderRedGreen extends DefaultTableCellRenderer 
    {
    
      
      RenderRedGreen () {
    
        setHorizontalAlignment(SwingConstants.RIGHT);  
      }
      
      public Component getTableCellRendererComponent(JTable aTable, 
                                              Object aNumberValue, 
                                              boolean aIsSelected, 
                                              boolean aHasFocus, 
                                              int aRow, int aColumn) {  
    
        
        Component renderer = super.getTableCellRendererComponent(aTable, 
                                                           aNumberValue, 
                                                           aIsSelected, 
                                                           aHasFocus, 
                                                           aRow, aColumn);
       	  if (aRow == rigaC && aColumn == colonnaC )
              {
               renderer.setBackground(Color.red);
               }
    
    
         
        
        return renderer;
      }
      
    
    }
    
    
    
    
    
    
    
    /**************************************
     *inizio alogoritmo di selezione
     *************************************/
    public class SelectionSorter
    {
    
    
    
    
    
    public SelectionSorter(int[] anArray)
    {
       int[] a = anArray;	
    }
    
    public void ordina()
    {
    	contaPassi = 0;
    	for (int i=0; i < mioarray.length - 1; i++)
    	{
    		contaPassi ++;
    		int minPos = minimumPosition(i);
    		swap(minPos, i, contaPassi);
            
        
      
    		
    	}
    	JOptionPane.showMessageDialog(null, "Ordinamento per selezione effettuato!");
    	
    }
    
    private int minimumPosition(int from)
    {
    	int minPos = from;
    	for (int i = from + 1; i < mioarray.length; i++)
    	{
    		if (mioarray[i] < mioarray[minPos])
    		{
    			minPos = i;
    		}
    		
    	}
    	
    
    		  
             
    		 
    	return minPos;	
    	
    }
    
    
    private void swap(int i, int j, int conta)
    {
    	int temp = mioarray[i];
    	mioarray[i] = mioarray[j];
    	mioarray[j] = temp;
    	
    		  
    	int rigaArray1 = i/numColonne;
    	int colonnaArray1 = i - (rigaArray1*numColonne);
    
        int rigaArray2 = j/numColonne;
    	int colonnaArray2 = j - (rigaArray2*numColonne);
    
    	int rigaConta = conta/numColonne;
    	int colonnaConta = conta - (rigaConta*numColonne);
        
    	miaTab.setValueAt(mioarray[i],rigaArray1,colonnaArray1);
    	miaTab.setValueAt(mioarray[j],rigaArray2,colonnaArray2);
    	
    	rigaC = rigaConta;
    	colonnaC = colonnaConta;
    	miaTab.setDefaultRenderer(Object.class, mioRender );
    	miaTab.revalidate();
    
        JOptionPane.showMessageDialog(null, "Algoritmo di Ordinamento - Passo n. "+contaPassi);
        
        
        
    
    }
    
    
    }
    public class  Modello extends DefaultTableModel
    	{
        	public Modello(String nomiColonne[], int numRighe){
        	    super(nomiColonne, numRighe);
        	    
        	}
    	  
          	public boolean isCellEditable(int row, int column){
           	
            	return true;
          	}
    	}
    
    public Ordinamento() 
        {
        	
          super("Ordinamento");
          setSize(800, 400);
          Object[] rig = new Object[5];
          miaTab.setGridColor(Color.black);
          miaTab.setIntercellSpacing(new Dimension(0, 0));
          Modello mioModel = new Modello(new String[10], 4);
    	  miaTab.setModel(mioModel);
    	  miaTab.setCellSelectionEnabled(true);
    	  miaTab.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
    	  
    	  miaTab.repaint();
    	  mioPane.setLayout(new FlowLayout());
    	  mioPane.add(miaTab);
    	  mioPaneB.setLayout(new GridLayout(10, 0));
    	  mioModel.addRow(rig);
          ordinaB = new JButton("Inizia Ordinamento");
          mioPaneB.add(ordinaB);
          pannelloOrdinamento.setLayout(new BorderLayout());
          ActionListener ordinaBListener = new ordinaBtnListener();
      	  ordinaB.addActionListener(ordinaBListener);
      	  
      	 
      	  
          
         
    		getContentPane().add(BorderLayout.NORTH, mioPane);
    		getContentPane().add(BorderLayout.CENTER, mioPaneB);
    		getContentPane().add(BorderLayout.SOUTH, testoCustom);
    		
    		setVisible(true);
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		System.out.println("Aperto il Programma");      
    	}
    
    
    
    
    
    
    	class ordinaBtnListener implements ActionListener {
    
    		public void actionPerformed(ActionEvent e) {
    			try 
    			{
    			  
    			  for (int v=0 ; v < mioarray.length; v++)
    			  {
    			     mioarray[v] = 0;
    			  }		      
    			  int indice = 0;
    			  for (int r = 1; r<= 5; r++ )
    			  {
    			  	for (int c = 1; c <= 10; c ++)
    			  	{
    
                        if (miaTab.getValueAt(r-1,c-1)== null || miaTab.getValueAt(r-1,c-1).toString().equals("") )
                        {
                        mioarray[indice] = 0;	
                        }
                        else
                        {
                        mioarray[indice] = Integer.parseInt(miaTab.getValueAt(r-1,c-1).toString());
                        }
    			  		
    
    			  		indice ++;
    			  		
    			  	}
    			  	 
    			  }
    			  
    
    			  SelectionSorter sorter = new SelectionSorter(mioarray);
    			  sorter.ordina();
    			  
    
    			  
    			  for (int v=0 ; v < mioarray.length; v++)
    			  {
    			     System.out.println(mioarray[v]);
    			  }
    			  
    				
    			} catch (Exception ex) {
    				System.out.println("eccezione2 " + ex);
    			}
    		}
    	}
    
    
    
    public static void main(String argv[]) 
       {
    		try {
    			//UIManager.setLookAndFeel("com.sun.java.swing.plaf.metal.MetalLookAndFeel");
    			UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
    
    		} catch (Exception e) {}
    
    		Ordinamento t = new Ordinamento();
    
    
    
    	}
    
    }

  2. #2
    Allora è proprio difficile.

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.