Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    177

    [Java][Grafica]problemi con posizioni e dimensioni

    Non riesco ad applicare alcune modifiche alla classe che ho postato.
    Vorrei dare al jsp una dimensione (verticale) minima ed una massima oltre quale i suoi elementi interni non si ridimensionano ma usano lo scroll. Attualmente le sue dimensioni corrispondono alla larghezza della finestra e lo scroll orizzontale funziona
    Vorrei settare una dimensione fissa per il pannello oppure impostare una sua dimensione minima o massima. Attualmente si adatta alla dimensione verticale del pannello.
    Ho fatto alcune prove ma con scarso risultato. Finestraextends JFrame, JTabella sfrutta dei metodi di JTable. I metodi che restituiscono un component usaranno tutti la classe JTabella come i metodi fornitori e fumetti.
    Se servono altri dettagli sui metodi chiedete pure. grazie in anticipo
    codice:
    class MyFrame extends JFrame {
    
        private static final long serialVersionUID = 1L;
        private Finestra frame;
        private JButton aggiungi,rimuovi,modifica,stampa;
        private static JTabella jTabella;
        private static JScrollPane jsp;
        private static JTable jt;
      
        public MyFrame(Finestra frame, String title, Component componente) {
            super(title);
            this.frame = frame;
            addWindowListener(new MyWindowListener1());
    //        setMinimumSize(getMinimumSize());
    //        jt.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
    //        JToolBar pannello = new JToolBar();
            JPanel pannello = new JPanel(new GridLayout(1,4));
    //        pannello.setMaximumSize(getMinimumSize());
    		aggiungi=new JButton("Aggiungi");
    		rimuovi=new JButton("Rimuovi");
    		modifica=new JButton("Modifica");
    		stampa=new JButton("Stampa");
    		pannello.add(aggiungi);
    		pannello.add(rimuovi);
    		pannello.add(modifica);
    		pannello.add(stampa);
    		aggiungi.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                	aggiungiActionPerformed(evt);
                }
            });
    		rimuovi.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    rimuoviActionPerformed(evt);
                }
            });
    		modifica.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    modificaActionPerformed(evt);
                }
            });
    		stampa.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    stampaActionPerformed(evt);
                }
            });
    		this.getContentPane().setLayout(new BorderLayout());
    		this.getContentPane().add(BorderLayout.SOUTH,pannello);
    	    this.getContentPane().add(BorderLayout.CENTER,componente);
    	    setBounds(5, 80, 700, 500);
            setVisible(true);
        }
        
        private void aggiungiActionPerformed(ActionEvent evt) {
        	jTabella.aggiungi(null);
    	}
        
        private void modificaActionPerformed(ActionEvent evt) {
        	jTabella.applicaModifiche();
    	}
        
    	private void stampaActionPerformed(ActionEvent evt) {
    		jTabella.stampa();
    	}
    	
    	private void rimuoviActionPerformed(ActionEvent evt) {
    		jTabella.rimuovi();
    	}
    
    	public static Component clienti() {
    		jTabella=new JTabellaFactory().creaTabella("clientii",false);
    		jsp=new JScrollPane(jTabella.creaJTabella());
    //		jsp.setBorder(BorderFactory.createLineBorder(Color.YELLOW));
    		return jsp;
    	}
    
    	public static Component ordini() {
    		jt=new JTable(5,5);
    		jsp=new JScrollPane(jt);
    //		jsp.setAutoscrolls(true);
    		return jsp;
    	}
    
    	public static Component fornitori() {
    		jTabella=new JTabellaFactory().creaTabella("fornitori",false);
    		jsp=new JScrollPane(jTabella.creaJTabella());
    //		jsp.setBorder(BorderFactory.createLineBorder(Color.YELLOW));
    		return jsp;
    	}
    
    	public static Component abbonamenti() {
    		jt=new JTable(100,100);
    		jsp=new JScrollPane(jt);
    //		jsp.setAutoscrolls(false);
    		return jsp;
    	}
    
    	public static Component salagiochi() {
    		jt=new JTable(5,5);
    		jsp=new JScrollPane(jt);
    		return jsp;
    	}
    
    	public static Component actionfigure() {
    		jTabella=new JTabellaFactory().creaTabella("actionFigure",false);
    		jsp=new JScrollPane(jTabella.creaJTabella());
    //		jsp.setBorder(BorderFactory.createLineBorder(Color.YELLOW));
    		return jsp;
    	}
    
    	public static Component fumetti() {
    		jTabella=new JTabellaFactory().creaTabella("fumetti",false);
    		jsp=new JScrollPane(jTabella.creaJTabella());
    //		jsp.setBorder(BorderFactory.createLineBorder(Color.YELLOW));
    		return jsp;
    	}
    
    	private class MyWindowListener1 extends WindowAdapter {
            public void windowClosing(WindowEvent we) {
                frame.frameChiuso();
                dispose();
            }
        }
        
    }
    Teo

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    L'argomento è ampio e alcuni aspetti sono già stati trattati altre volte.

    Innanzitutto: quello che stai facendo tu è un'applicazione Swing... JSP (Java Server Pages) è tutta un'altra cosa e non c'entra assolutamente nulla (riguarda le applicazioni WEB).

    Tutto ruota attorno all'uso dei LayoutManager, che governano il layout dei componenti (posizioni e dimensioni).

    Ogni componente di tipo contenitore (finestre, pannelli, dialogs, ecc) ha, solitamente, un LayoutManager predefinito. Se vuoi avere dei comportamenti personalizzati, che non riesci (per diversi motivi) ad ottenere mediante l'uso di un LayoutManager, allora dovrai togliere di mezzo quello di default (settandolo a null) e lavorare a mano (usando setBounds() e getBounds() per settare/ottenere dimensioni e posizioni sui componenti).

    Per quanto riguarda lo scroll, c'è da tenere presente che non tutti i componenti sono in grado di "scrollarsi"... i JPanel ad esempio (che, a quanto ho capito, dovrai usare) non implementano l'interfaccia Scrollable. Di conseguenza, tutto l'onere della gestione dello scroll passa in mano a te.

    Ti consiglio di approfondire tutti gli aspetti che ti ho citato... come vedi, gli argomenti sono diversi. Se li si conosce, si può ottenere facilmente il comportamento voluto... se non li si conosce, si farà tanta fatica per nulla.


    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

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.