Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2015
    Messaggi
    15

    Larghezza Interfaccia Grafica

    Ho sviluppato la seguente classe al fine di produrre una scelta tra 2 alternative di percorsi
    Siccome i punti del percorso sono tanti, vanno al di là del limite della finestra
    codice:
    package view;
    
    import java.awt.GridLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    
    
    import javax.swing.ButtonGroup;
    import javax.swing.JButton;
    import javax.swing.JOptionPane;
    import javax.swing.JPanel;
    import javax.swing.JRadioButton;
    import javax.swing.SpringLayout;
    
    
    import controller.ReservationController;
    import model.Percorso;
    import model.Reservation;
    
    
    public class PathChoicePanel extends JPanel implements ActionListener{
    
    
    	ButtonGroup radioButtonGroup;
    	JRadioButton percorsoBreve;
    	JRadioButton percorsoVeloce;
    	JButton button;
    
    
    	MyFrame myFrame;
    
    
    	Reservation reservation;
    	Percorso percorsoPiuBreve;
    	Percorso percorsoPiuVeloce;
    
    
    	public PathChoicePanel(MyFrame myFrame){
    		super();
    		this.myFrame=myFrame;
    
    
    		radioButtonGroup = new ButtonGroup();
    		percorsoBreve = new JRadioButton("percorso più breve");
    		percorsoVeloce = new JRadioButton("percorso più veloce");
    		radioButtonGroup.add(percorsoBreve);
    		radioButtonGroup.add(percorsoVeloce);
    		button = new JButton("prenota");
    
    
    		button.addActionListener(this);
    
    
    		SpringLayout layout = new SpringLayout();
    		setLayout(layout);
    		
    		
    		add(percorsoBreve);
    		add(percorsoVeloce);
    		add(button);
    		
    		layout.putConstraint(SpringLayout.NORTH, percorsoBreve, 50, SpringLayout.NORTH, this);
    		layout.putConstraint(SpringLayout.WEST, percorsoBreve, 35, SpringLayout.WEST, this);
    		
    		layout.putConstraint(SpringLayout.NORTH, percorsoVeloce, 50, SpringLayout.NORTH, percorsoBreve);
    		layout.putConstraint(SpringLayout.WEST, percorsoVeloce, 35, SpringLayout.WEST, this);
    		
    		layout.putConstraint(SpringLayout.NORTH, button, 50, SpringLayout.NORTH, percorsoVeloce);
    		layout.putConstraint(SpringLayout.WEST, button, 35, SpringLayout.WEST, this);
    
    
    	}
    
    
    	public void init(Reservation reservation, Percorso percorsoPiuBreve, Percorso percorsoPiuVeloce){
    		this.reservation=reservation;
    		this.percorsoPiuBreve=percorsoPiuBreve;
    		this.percorsoPiuVeloce=percorsoPiuVeloce;
    		this.percorsoBreve.setText(this.percorsoBreve.getText()+": "+percorsoPiuBreve.toString()+" costo: "+percorsoPiuBreve.getCosto());
    		this.percorsoVeloce.setText(this.percorsoVeloce.getText()+": "+percorsoPiuVeloce.toString()+" costo: "+percorsoPiuVeloce.getCosto());
    	}
    
    
    	@Override
    	public void actionPerformed(ActionEvent e) {
    		if(e.getSource().equals(button)){
    			if(!percorsoBreve.isSelected() && !percorsoVeloce.isSelected()){
    				JOptionPane.showMessageDialog(this, "seleziona un percorso", "Error", JOptionPane.ERROR_MESSAGE);
    			}else{
    				if(percorsoBreve.isSelected()){
    					reservation.setPercorso(percorsoPiuBreve);
    					reservation.getTaxi().effettuaCorsa(percorsoPiuBreve);
    				}else{
    					reservation.getTaxi().effettuaCorsa(percorsoPiuVeloce);
    					reservation.setPercorso(percorsoPiuVeloce);
    				}
    				ReservationController.getInstance().addReservation(reservation);
    				myFrame.showReservationDetailPanel(reservation);
    			}
    		}
    	}
    
    
    }
    Come posso fare in modo che a prescindere dal numero di punti elencati la finestra generata diventi di quella larghezza senza che alcuni punti spariscano?

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Non ho possibilità di provare quel codice, perché chiaramente mancano le classi Reservation, ecc.. Non si vede però nulla riguardo la creazione del frame (sarà ovviamente da un'altra parte ...) e vedo invece che hai usato SpringLayout, che personalmente te lo sconsiglio, perché insieme a GroupLayout è uno dei layout manager più complessi, contorti e difficili da usare.

    Il 99,9% delle interfacce grafiche Swing si può tranquillamente fare con gli altri layout manager più semplici di AWT/Swing.
    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
    Mar 2015
    Messaggi
    15
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Non ho possibilità di provare quel codice, perché chiaramente mancano le classi Reservation, ecc.. Non si vede però nulla riguardo la creazione del frame (sarà ovviamente da un'altra parte ...) e vedo invece che hai usato SpringLayout, che personalmente te lo sconsiglio, perché insieme a GroupLayout è uno dei layout manager più complessi, contorti e difficili da usare.

    Il 99,9% delle interfacce grafiche Swing si può tranquillamente fare con gli altri layout manager più semplici di AWT/Swing.
    Se non volessi fare troppo modifiche al codice per passare da un layout all'altro invece come posso fare?

    Le classi che dovrebbero servire sono
    Reservation
    codice:
    package model;
    
    
    public class Reservation {
    
    
    	User user;
    	String partenza;
    	String destinazione;
    	String modalita;
    	Taxi taxi;	
    	Percorso percorso;
    
    
    	
    	public Percorso getPercorso() {
    		return percorso;
    	}
    
    
    	public void setPercorso(Percorso percorso) {
    		this.percorso = percorso;
    	}
    
    
    	public Reservation(User user, String partenza, String destinazione, String modalita){
    		this.user=user;
    		this.partenza=partenza;
    		this.destinazione=destinazione;
    		this.modalita=modalita;
    	}
    	
    	public User getUser() {
    		return user;
    	}
    
    
    	public void setUser(User user) {
    		this.user = user;
    	}
    
    
    	public String getPartenza() {
    		return partenza;
    	}
    
    
    	public void setPartenza(String partenza) {
    		this.partenza = partenza;
    	}
    
    
    	public String getDestinazione() {
    		return destinazione;
    	}
    
    
    	public void setDestinazione(String destinazione) {
    		this.destinazione = destinazione;
    	}
    
    
    	public String getModalita() {
    		return modalita;
    	}
    
    
    	public void setModalita(String modalita) {
    		this.modalita = modalita;
    	}
    
    
    	public Taxi getTaxi() {
    		return taxi;
    	}
    
    
    	public void setTaxi(Taxi taxi) {
    		this.taxi = taxi;
    	}	
    }
    E la classe Percorso
    codice:
    package model;
    
    
    import main.Constants;
    
    
    public class Percorso {
    	int[] percorso;
    	float costo;
    	float tempo;
    	float distanza;
    	
    	
    	public Percorso(int[] percorso){
    		this.percorso=percorso;
    	}
    	
    	@Override
    	public String toString(){
    		String s="";
    		for (int i=0;i<percorso.length;i++){
    			s+=Constants.citta[percorso[i]]+"-";
    		}
    		s=s.substring(0,s.length()-1);
    		return s;
    	}
    	
    	public float getCosto() {
    		return costo;
    	}
    
    
    	public void setCosto(float costo) {
    		this.costo = costo;
    	}
    
    
    	public float getTempo() {
    		return tempo;
    	}
    
    
    	public void setTempo(float tempo) {
    		this.tempo = tempo;
    	}
    
    
    	public float getDistanza() {
    		return distanza;
    	}
    
    
    	public void setDistanza(float distanza) {
    		this.distanza = distanza;
    	}
    
    
    }

    E anche ReservationController

    codice:
    package controller;
    
    
    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.FileWriter;
    import java.io.IOException;
    
    
    import model.Reservation;
    
    
    public class ReservationController {
    
    
    	private static final String progettoDirPath = "database";
    	private static final String reservationFilePath = progettoDirPath+File.separator+"prenotazioni.txt";
    
    
    	File reservationFile;
    
    
    	private static ReservationController instance = null;
    	
    	public static synchronized ReservationController getInstance() {
    		if (instance == null) {
    			instance = new ReservationController();
    		}
    		return instance;
    	}
    	
    	public boolean checkPrenotazioniFile(){
    		reservationFile = new File(reservationFilePath);
    		boolean reservationFileOk = true;
    		if (!reservationFile.exists()){
    			try {
    				reservationFile.createNewFile();
    			} catch (IOException e) {
    				e.printStackTrace();
    				reservationFileOk = false;
    				return reservationFileOk;
    			}
    		}
    		return reservationFileOk;
    	}
    	
    	public boolean addReservation(Reservation reservation){
    		boolean esito=true;
    		BufferedWriter output = null;
    		try {
    			output = new BufferedWriter(new FileWriter(reservationFilePath, true));
    			if(reservationFile.length()>0){
    				output.newLine();
    			}
    			output.write(reservation.getUser().getUsername()+";"+reservation.getPartenza()+";"+reservation.getDestinazione()+
    					";"+reservation.getPercorso().toString()+";"+reservation.getModalita()+";"+reservation.getPercorso().getDistanza()+
    					";"+reservation.getPercorso().getTempo()+";"+reservation.getPercorso().getCosto());
    		} catch (IOException e) {
    			esito = false;
    			e.printStackTrace();
    		} finally {
    			try {
    				output.close();
    			} catch (IOException e) {
    				esito = false;
    				e.printStackTrace();
    			}
    		}
    		return esito;
    	}
    
    
    	
    }

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.