Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    140

    interfaccia grafica sul palmare

    cioa a tutti.. eseguo un jar su un palmare, la jtable mi appare solo l'intestazione tra l'altro con colonn eminuscole... ma non mi appaiono le righe che contiene.. invece eseguendolo su pc si.. cosa potrebbe essere... quale codice devo postare? grazie

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: interfaccia grafica sul palmare

    Originariamente inviato da Aleb
    cioa a tutti.. eseguo un jar su un palmare, la jtable mi appare solo l'intestazione tra l'altro con colonn eminuscole... ma non mi appaiono le righe che contiene.. invece eseguendolo su pc si.. cosa potrebbe essere... quale codice devo postare? grazie
    Potrebbe essere un baco di quel framework sul palmare, potrebbe essere una questione di layout (non so come l'hai gestito e quali altri componenti hai) tale per cui se la finestra è troppo piccola comprime al minimo la tabella. Potrebbe essere altro ....
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    140
    codice:
    public class GuiPalmare extends JFrame implements ActionListener {
    	private JButton insTavolo,registra,aggiungiP;
    	public static JTextField tx1;
    	public static JScrollPane scrollTable;
    	public static MyTable tableExtra, tablePrimi;
    	private JPanel contenitoreTable;
    
    	public static MyTableModel modello=null;
      
    	public static Scontrino sc=new Scontrino();
    	int caricato=-1;
    			
    	public GuiPalmare(){
    	        super("");
                    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                    setVisible(true);    
    		setLayout(new BorderLayout()); 
    				
    		insTavolo=new JButton("Tavolo n°: ");
    		tx1=new JTextField(5);
    		tx1.setEditable(false);
    				
    		registra=new JButton("Registra");
    		aggiungiP=new JButton("Aggiungi");
    		insTavolo.addActionListener(this);
    		
    		//********************* NORD *********************
    		JPanel north=new JPanel();
    		north.add(insTavolo);
    		north.add(tx1);
    		this.add(north,BorderLayout.NORTH);
    	
    		//********************* SUD *********************
    		JPanel south=new JPanel();
    		south.setLayout(new BoxLayout(south,BoxLayout.X_AXIS));
    		
    		south.add(aggiungiP);
    		south.add(registra);
    		this.add(south,BorderLayout.SOUTH);
    		
    	
    		//************ CENTRO *********************				
    		ArrayList<Pietanza> perModelExtra=new ArrayList<Pietanza>();
    		ArrayList<Pietanza> perModelPrimi=new ArrayList<Pietanza>();
    		
    		ArrayList<Pietanza> perTable=new ArrayList<Pietanza>(GuiInizioPal.mpartenza.piet.values());
    		for(Pietanza c:perTable){
    			if(c.getCategoria().toString().equalsIgnoreCase("EXTRA") && c.getVarie()==false)
    				perModelExtra.add(c);
    			else if(c.getCategoria().toString().equalsIgnoreCase("PRIMI") && c.getVarie()==false)
    				perModelPrimi.add(c);
    		}		
    	
    		contenitoreTable=new JPanel();
    		contenitoreTable.setLayout(new BoxLayout(contenitoreTable,BoxLayout.Y_AXIS));
    		
    		
    			tableExtra = new MyTable(perModelExtra);
    			tablePrimi = new MyTable(perModelPrimi);
    			contenitoreTable.add(tableExtra);
    				contenitoreTable.add(tablePrimi);
    	}
    		scrollTable=new JScrollPane(contenitoreTable);
    		scrollTable.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED);
    		this.add(scrollTable,BorderLayout.CENTER);
    		this.validate();
    	}
    			
    	public void actionPerformed(ActionEvent e){
    		Object bottone=e.getSource();
    	
    		if(bottone==insTavolo){
    			GuiSetTavolo set=new GuiSetTavolo(0);
    		}
    			
    	}
    	
    			
    }
    	
    }
    questo è il codice di mytable
    codice:
    public class MyTable extends JTable{
    	
    	private MyTableModel modelloTable;
    	public MyTable(ArrayList<Pietanza> arrayP){
    		
    	Collections.sort(arrayP);
    	modelloTable = new MyTableModel(arrayP);
    	setModel(modelloTable);		
    
    	}
    	
    	public MyTableModel getModel(){
    		return modelloTable;
    	}
    }
    codice di mytablemodel

    codice:
    public class MyTableModel extends AbstractTableModel  {
    
    		
    	//intestazioni delle colonne
    	String nomeColonne[]={" ","Cod","Desc","Qtà"};
    	ArrayList<Pietanza> arrayP=new ArrayList<Pietanza>();
    	
    	public MyTableModel(ArrayList a){
    		this.arrayP=a;
    		
    	}
    	
    	
    	public ArrayList getArray(){
    		return arrayP;
    	}
    	//torna numero colonne
    	public int getColumnCount()
    	{
    		return nomeColonne.length;
    	}
    	
    	//torna numero righe
    	public int getRowCount()
    	{
    		return arrayP.size();
    	}
    	
    	public Object getValueAt(int row,int col)
    	{
    		//seleziono la pietanza
    		Pietanza p=(Pietanza)arrayP.get(row);
    		if(col==0)
    			return "-";
    		else if(col==1)
    			return String.valueOf(p.getCodice());
    		else if(col==2)	
    			return p.getDescrizione();
    		else if(col==3)//quantita
    			return String.valueOf(p.getOrdinata());
    		else{
    			return "...";
    		}
    			
    		}
    	
    	public void setValueAt(Object val, int row, int col){
    		Pietanza p=(Pietanza)arrayP.get(row);
    		if(col==3){
    			String pippo=String.valueOf(val);
    			p.setOrdinata(Integer.valueOf(pippo)); //cambio valore
    			}
    		fireTableDataChanged();
    	}
    		
    		
    	public String getColumnName(int col){
    		return nomeColonne[col];
    	}
    	
    	public boolean isCellEditable(int row,int col){
    		if(col==0 || col==1 ||col==3)
    			return true;
    		else
    			return false;
    	}
    	
    	public void aggiungiRiga(Pietanza piet){
    		arrayP.add(piet);
    		int row=arrayP.size()-1;
    		fireTableRowsInserted(row,row);	
    	
    	}
    	
    	public void rimuoviRiga(Pietanza piet){
    		arrayP.remove(piet);
    		int row=arrayP.size();
    		fireTableRowsDeleted(0,row);
    	
    	}
    	
    		
    	
    }

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Ci sono delle cose inutili nel codice ma in linea di massima mi sembra tutto corretto. A meno dello spazio occupato da NORTH/SOUTH, nella parte CENTER le 2 tabelle sono dentro un JPanel (con BoxLayout verticale), a sua volta dentro un JScrollPane.
    Personalmente non hai messo più tabelle dentro un pannello e poi questo dentro un JScrollPane ma non vedo nulla di male/strano (e oltretutto dici che su PC funziona!).

    P.S. Le categorie sono in una enum??? Perché se è così, quel passaggio c.getCategoria().toString().equalsIgnoreCase("EXTR A") è parecchio inutile e fumoso.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    140
    si categoria è enum...

    quindi il layout pensi non sia il problema?

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Aleb
    si categoria è enum...
    Allora invece di

    c.getCategoria().toString().equalsIgnoreCase("EXTR A")

    è più corretto e logico:

    c.getCategoria() == Categoria.EXTRA
    (se la enum si chiama Categoria, ovviamente)

    Le enum si possono confrontare comodamente con == o !=, perché le uniche istanze della enum sono solo quelle assegnate alle costanti della enum ... e quelli sono i reference, non ce ne possono essere altri!

    Originariamente inviato da Aleb
    quindi il layout pensi non sia il problema?
    Come ho detto, non c'è nulla di male a mettere più componenti (es. 2 JTable) in un pannello e poi mettere questo nel JScrollPane.
    Nel caso di JTable c'è solo una piccola questione che sicuramente hai già notato. Gli header delle tabelle non si vedono. Si vede l'header se metti un JTable direttamente in un JScrollPane.
    Se non è così l'header lo puoi ancora vedere ma devi metterlo esplicitamente tu nel layout, prendendo il JTableHeader con getTableHeader() e aggiungendolo in modo che sia visualmente sopra (in teoria anche sotto, addirittura!).


    P.S. Quando ci si trova a dover fare cose del tipo:
    GuiInizioPal.mpartenza.piet.values()

    oppure es.:
    qualcosa.getAltro().getComponenteXYZ().campo

    o altro di simile in cui si deve "entrare" dentro altri oggetti in cascata per invocare metodi o referenziare campi, questo generalmente è il "sintomo" che il design delle classi fa abbastanza "acqua", come si dice.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    140
    sicuramente il mio codice non è stupendo... ma è il primo che faccio.. e sicuramente lo devo rivedere... su questo non ho dubbi...
    visto che mi critichi (ne sai + di me, quindi puoi) posso chiederti tu quali classi avresti fatto? il programma è il seguente: il programma di una cassa per la stampa di scontrini.


    cmq avevi ragione il problema era proprio quel jpanel dentro ad uno scroll...

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Aleb
    visto che mi critichi.
    Non volevo certo che lo vedessi come una "critica" (tantomeno negativa). Semplicemente ho notato delle cose e te le ho fatte presente.

    Originariamente inviato da Aleb
    posso chiederti tu quali classi avresti fatto? il programma è il seguente: il programma di una cassa per la stampa di scontrini.
    Su due piedi ... così è un po' vago, non posso dirlo. Nel senso che solo a leggere questa e altre tue discussioni che hai aperto legate a questo tuo programma non posso certo avere quella "visione" generale del problema, cioè sapere esattamente quali sono le entità in gioco, in quali relazioni, i requisiti della applicazioni, ecc....
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  9. #9
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    140
    magari quando dovrò rivisionare tutto il codice posto come l'ho pensata, così con le tue dritte lo aggiusto un pò... :-)

    tornando all'interfaccia grafica.. ora ho il seguente problema: ho la tbale coni pulsanti ma perchè funzioni il pulsante ci devo cliccare due volte...

  10. #10
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    140
    al primo clic mi fa il contorni della scritta del jbutton. so che è il focus.. volevo toglierlo e ho fatto setFocusPainted(false); ma non va... xkè?

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.