Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2014
    Messaggi
    2

    Java Problemi nella visualizzazione del programma

    Buongiorno/Buonasera a tutti quanti,

    Sto sviluppando un programma, abbastanza complesso, per i vari problemi che sorgono cerco di riuscire da solo nella risoluzione ma per questo non riesco a trovare nulla.

    Il programma visualizza una finestra (JFrame) a schermo intero, all'interno dipingo scritte e linee (Con metodo Paint) e aggiungo pulsanti su pannelli che verranno a loro volta aggiunti al JFrame principale (JButton, JPopupMenu, JSlider).
    Il layout del JFrame è impostato di default, siccome impostandolo a null crea problemi nella visualizzazione, e non è ridimensionabile.

    Quando lancio il programma, con lo stesso identico codice, mi visualizza risultati diversi tra di loro.
    Per esempio: una volta il programma così come dovrebbe essere, una volta solo i JButton nella loro giusta posizione, a volte i soli JButton in posizioni sbagliate.
    Questo mi capitava anche con un'altro programma (Creato in maniera simile) , provato anche su un diverso computer e in formato bytecode .jar e .exe .

    Secondo voi a cosa può essere dovuto? Io avevo pensato a qualche problema inerente al layout.

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Cave97 Visualizza il messaggio
    Quando lancio il programma, con lo stesso identico codice, mi visualizza risultati diversi tra di loro.
    Per esempio: una volta il programma così come dovrebbe essere, una volta solo i JButton nella loro giusta posizione, a volte i soli JButton in posizioni sbagliate.

    Secondo voi a cosa può essere dovuto? Io avevo pensato a qualche problema inerente al layout.
    Mi spiace ma senza vedere il codice è quasi praticamente impossibile dire cosa ci può essere che è sbagliato o inappropriato. Inoltre ho anche la vaga sensazione che ci possa essere, da parte tua, una non completa/chiara comprensione dei meccanismi di layout in AWT/Swing ... ma è solo una mia impressione, potrei confermarla solo vedendo il codice ....
    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
    Jun 2014
    Messaggi
    2
    Si infatti di layout in generale so veramente poco, purtroppo sto studiando da solo il linguaggio java (che è il primo che ho conosciuto) da circa 8 mesi senza seguire un percorso preciso.

    Questo è il codice in cui creo il JFrame e aggiungo gli altri elementi

    codice:
    public class FinestraPrincipale { 
    
    
    public static JFrame finestra = new JFrame ();
    
    // Impostazione finestra
    
    private void setFinestraPrincipale(){
    
    Toolkit TK = Toolkit.getDefaultToolkit();
    
    finestra.setBounds(0,0,TK.getScreenSize().width,TK.getScreenSize().height);
    finestra.setVisible(true);
    finestra.setTitle("Piano Cartesiano");
    finestra.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    finestra.setResizable(false);
    }
    
    
    
    
    
    // Bottoni per aggiunta elementi 
    
    JButton BottonePunto = new JButton();
    JButton BottoneRetta = new JButton();
    JButton BottoneTriangolo = new JButton();
    JButton BottoneQuadrilatero = new JButton();
    
    private void setBottoniAggiuntaElementi(){
    
    JPanel panelBottonePunto = new JPanel();
    JPanel panelBottoneRetta = new JPanel();
    JPanel panelBottoneTriangolo = new JPanel();
    JPanel panelBottoneQuadrilatero = new JPanel();
    
    panelBottonePunto.setLayout(null);
    panelBottoneRetta.setLayout(null);
    panelBottoneTriangolo.setLayout(null);
    panelBottoneQuadrilatero.setLayout(null);
    
    BottonePunto.setSize(25, 25);
    BottoneRetta.setSize(25, 25);
    BottoneTriangolo.setSize(25, 25);
    BottoneQuadrilatero.setSize(25, 25);
    
    panelBottonePunto.setBounds(730, 155, 25, 25);
    panelBottoneRetta.setBounds(730, 195, 25, 25);
    panelBottoneTriangolo.setBounds(730, 235, 25, 25);
    panelBottoneQuadrilatero.setBounds(730, 275, 25, 25);
    
    panelBottonePunto.add(BottonePunto);
    panelBottoneRetta.add(BottoneRetta);
    panelBottoneTriangolo.add(BottoneTriangolo);
    panelBottoneQuadrilatero.add(BottoneQuadrilatero);
    
    Image immaginePunto;
    immaginePunto = Toolkit.getDefaultToolkit().getImage("C:/Users/Emanuele/Pictures/Punto.jpg");
    BottonePunto.setIcon(new ImageIcon(immaginePunto.getScaledInstance(75, 75, Image.SCALE_FAST)));
    
    Image immagineRetta;
    immagineRetta = Toolkit.getDefaultToolkit().getImage("C:/Users/Emanuele/Pictures/Retta.jpg");
    BottoneRetta.setIcon(new ImageIcon(immagineRetta.getScaledInstance(75, 75, Image.SCALE_FAST)));
    
    Image immagineTriangolo;
    immagineTriangolo = Toolkit.getDefaultToolkit().getImage("C:/Users/Emanuele/Pictures/Triangolo.jpg");
    BottoneTriangolo.setIcon(new ImageIcon(immagineTriangolo.getScaledInstance(65, 65, Image.SCALE_FAST)));
    
    Image immagineQuadrilatero;
    immagineQuadrilatero = Toolkit.getDefaultToolkit().getImage("C:/Users/Emanuele/Pictures/Quadrilatero.jpg");
    BottoneQuadrilatero.setIcon(new ImageIcon(immagineQuadrilatero.getScaledInstance(65, 65, Image.SCALE_FAST)));
    
    finestra.add(panelBottonePunto);
    finestra.add(panelBottoneRetta);
    finestra.add(panelBottoneTriangolo);
    finestra.add(panelBottoneQuadrilatero);
    
    }
    
    
    
    
    
    //Aggiunta JSlider selezionatore unità di misura
    
    JSliderUnitaMisura oggSelezionaUnita = new JSliderUnitaMisura();
    
    private void setJSliderSelezioneUnitàDiMisura(){
    JPanel panelUnitàMisura = new JPanel();
    panelUnitàMisura.setBounds(725, 60, 200, 60);
    
    panelUnitàMisura.add(JSliderUnitaMisura.unitaMisura);
    
    finestra.add(panelUnitàMisura);
    }
    
    
    
    
    
    // Aggiunta menù alla finestra principale
    
    JMenuBar menubar = new JMenuBar ();
    JMenu menuFile = new JMenu ("File");
    JMenu menuModifica = new JMenu ("Modifica");
    JMenu menuVisualizza = new JMenu ("Visualizza");
    JMenu menuImpostazioni = new JMenu ("Impostazioni");
    JMenu menuHelp = new JMenu ("?");
    
    private void addMenùToFrame(){
    
    finestra.setJMenuBar(menubar);
    menubar.add(menuFile);
    menubar.add(menuModifica);
    menubar.add(menuVisualizza);
    menubar.add(menuImpostazioni);
    menubar.add(menuHelp);
    }
    
    
    
    
    
    //Sottomenù di menuFile
    
    JMenuItem nuovo = new JMenuItem ("Nuovo foglio");
    public JMenuItem esci = new JMenuItem ("Esci");
    
    private void addSottomenùDiMenuFile(){
    menuFile.add(nuovo);
    menuFile.add(esci);
    
    esci.addActionListener(new BottoneEsci());
    }
    
    
    
    
    
    //Sottomenù di menuImpostazioni
    
    public JMenuItem selezionaLookAndFeel = new JMenuItem ("Seleziona stile");
    private JMenu aggiungiElemento = new JMenu ("Aggiungi elemento");
    
    JMenuItem menuPunto = new JMenuItem("Aggiungi punto");
    JMenuItem menuRetta = new JMenuItem("Aggiungi retta");
    JMenuItem menuTriangolo = new JMenuItem("Aggiungi triangolo");
    JMenuItem menuQuadrilatero = new JMenuItem("Aggiungi quadrilatero");
    
    private void addSottomenùDiMenuImpostazioni(){
    
    menuImpostazioni.add(aggiungiElemento);
    menuImpostazioni.addSeparator();
    menuImpostazioni.add(selezionaLookAndFeel);
    
    aggiungiElemento.add(menuPunto);
    aggiungiElemento.add(menuRetta);
    aggiungiElemento.add(menuTriangolo);
    aggiungiElemento.add(menuQuadrilatero);
    
    
    selezionaLookAndFeel.addActionListener (new SelezionaLookAndFeel());
    
    }
    
    
    
    
    //Sottomenù di menuHelp
    
    JMenuItem guida = new JMenuItem ("Guida");
    JMenuItem informazioni = new JMenuItem ("Informazioni su: Piano Cartesiano");
    
    private void addSottomenùDiMenuHelp(){
    
    menuHelp.add(guida);
    menuHelp.add(informazioni);
    
    }
    
    
    
    
    private void addSottomenùToJMenu(){
    
    addSottomenùDiMenuFile();
    
    addSottomenùDiMenuImpostazioni();
    
    addSottomenùDiMenuHelp();
    }
    
    
    
    
    public FinestraPrincipale() {
    
    
    setFinestraPrincipale();
    
    setBottoniAggiuntaElementi();
    
    setJSliderSelezioneUnitàDiMisura();
    
    addMenùToFrame();
    
    addSottomenùToJMenu();
    
    
    
    
    JPanel panelDisegno = new CreaGrafico();
    
    finestra.add(panelDisegno);
    
    
    
    }
    
    
    }


    Nel metodo main (In una classe diversa) vado a cambiare il Look & Feel e poi a richiamare il costruttore della classe qui sopra (new FinestraPrincipale())

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.