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

    Problemi sul Frame java

    Ho dei piccoli problemi sul Jframe dopo l'aggiunta del menù, di fatti se vi clicco sopra con il mouse successivamente non legge il movimento del medesimo o lo spostamento verticale del puntatore; tra l'altro o forti curiosità sul come si possa implementare una scelta da tastiera sul frame, io nel codice del programma, sotto illustrato, ho progettato uno switch per il ridimensionamento del frame, però non so come fare a selezionare la risoluzione dal frame, perché con input da tastiera non ci vuole niente, però il problema è la scelta del menù del frame, non fate caso all'unione del menu del ridimensionamento e a quello per l'accesso, perdonatemi se non è in ordine o roba del genere, garzie.

    codice:
    package graficaprogetto;
    
    
    import java.awt.Canvas;
    import java.awt.Dimension;
    import java.awt.Graphics;
    import java.awt.MenuContainer;
    import java.awt.event.ActionEvent;
    import java.awt.event.KeyEvent;
    import java.awt.event.KeyListener;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseMotionListener;
    import java.awt.image.BufferStrategy;
    import java.awt.image.BufferedImage;
    import java.io.*;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.*;
    
    
    public class GraficaProgetto extends Canvas implements Runnable,KeyListener,MouseMotionListener,MenuContainer{
    private static int altezza;
    private static int larghezza;
    private static String nome="CNMS";
     public static BufferedImage musica=null;
     public static BufferedImage musica2=null;
     public static BufferedImage puntatore=null;
     private puntatore p;
     public static BufferedReader k= new BufferedReader(new InputStreamReader(System.in));
     private boolean att;
     static JLabel label;
     static JMenu menu1,menu2,menu,menu3;
     static JMenuBar menuBar, menuBar2;
     static JButton bottone;
     static JMenuItem menuI1,menuI2,menuI3,menuI4,menuI5,menuI6;
     
     
     
     
    public GraficaProgetto() throws Exception{
        caricaRisorse();
        inizio();
    }
    
    
        public int getAltezza() {
            return altezza;
        }
    
    
        public void setAltezza(int altezza) {
            GraficaProgetto.altezza = altezza;
        }
    
    
        public int getLarghezza() {
            return larghezza;
        }
    
    
        public void setLarghezza(int larghezza) {
            GraficaProgetto.larghezza = larghezza;
        }
    
    
        private void caricaRisorse()throws Exception{
            Caricatore log= new Caricatore();
            musica=log.caricaImmagini("/immagini/musica.png");
            musica2=log.caricaImmagini("/immagini/musica2.png");
            puntatore=log.caricaImmagini("/immagini/star.png");
        }
        private void disegna(){
            BufferStrategy b=this.getBufferStrategy();
            if(b==null){
                createBufferStrategy(2);
                return;
            }
            Graphics g=b.getDrawGraphics();
            g.drawImage(musica2, 0, 0,larghezza,altezza,this);
            p.dis(g);
            g.dispose();
            b.show();
        }
        
        private void inizio(){
            p=new puntatore(puntatore,0,50,50,this);
            p.start();
        }
        public static void main(String[] args) throws Exception {
            GraficaProgetto gP=new GraficaProgetto();
            JFrame finestra= new JFrame(nome);
            altezza= 200;
            larghezza= 400;
            //menu
            menuBar= new JMenuBar();
            menu= new JMenu("Opzioni");
            menuBar.add(menu);
            menu.addSeparator();
            menu1=new JMenu("Risoluzione schermo");
            menuI1= new JMenuItem("4:3",KeyEvent.VK_T);
            menuI1.setAccelerator (KeyStroke.getKeyStroke (
            KeyEvent.VK_1, ActionEvent.ALT_MASK));
            menuI2= new JMenuItem("16:9",KeyEvent.VK_D);
            menuI2.setAccelerator (KeyStroke.getKeyStroke (
            KeyEvent.VK_2, ActionEvent.ALT_MASK));
            menu1.add(menuI1);
            menu1.add(menuI2);
            menu.add(menu1);
            menu.addSeparator();
            menu2=new JMenu("Login");
            menuI3= new JMenuItem("Amministatore");
            menuI4= new JMenuItem("Utente");
            menu3= new JMenu("Registati");
            menu2.add(menuI3);
            menu2.add(menuI4);
            menuI5=new JMenuItem("Admin");
            menuI6= new JMenuItem("User");
            menu3.add(menuI5);
            menu3.add(menuI6);
            menu2.add(menu3);
            menu.add(menu2);
            // fine menu
            Dimension dimension= new Dimension(larghezza, altezza);
            finestra.setPreferredSize(dimension);
            finestra.setMaximumSize(dimension);
            finestra.setResizable(false);
            finestra.setIconImage(musica);
            finestra.setJMenuBar(menuBar);
            finestra.addKeyListener(gP);        
            gP.addMouseMotionListener(gP);
            finestra.pack();
            finestra.setVisible(true);
            int s = 0;
            do{
                System.out.println("1-4:3");
                System.out.println("2-16:9");
                System.out.println("3-Uscita");
                System.out.print("Risoluzione finestra: ");
                s=Integer.parseInt(k.readLine());
                switch(s){
                    case 1:
                        altezza=640;
                        larghezza=720;
                        break;
                    case 2:
                        altezza=720;
                        larghezza=1280;
                        break;
                }
                }while(s>=3);
            Dimension dimensione= new Dimension(larghezza,altezza);
            finestra.setPreferredSize(dimensione);
            finestra.setMaximumSize(dimensione);
            finestra.setResizable(false);
            finestra.setIconImage(musica);
            finestra.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            finestra.add(gP);
            finestra.addKeyListener(gP);        
            gP.addMouseMotionListener(gP);
            finestra.pack();
            finestra.setVisible(true);
            
            Thread gPs= new Thread(gP);
            gPs.start();
            
        }
    
    
        @Override
        public void keyTyped(KeyEvent ke) {}
        @Override
        public void keyPressed(KeyEvent ke) {
            int keycode=ke.getKeyCode();
          switch(keycode){
              case KeyEvent.VK_DOWN:
                  p.sopra();
                  break;
              case KeyEvent.VK_UP:
                  p.sotto();
                  break;
        }
        }
        @Override
        public void keyReleased(KeyEvent ke) {}  
         @Override
        public void run() {
            att=true;
            while(att){
            disegna();
            }
        }
        @Override
        public void mouseDragged(MouseEvent me) {}
        @Override
        public void mouseMoved(MouseEvent me) {
            int pt=0;
            pt=(me.getPoint().y)-(p.geta()/2);
            if(pt>=0 && pt+p.geta()<=altezza){
            p.sety(pt);
        }
    }
    }
    
    package graficaprogetto;
    
    
    import java.awt.Graphics;
    import java.awt.Rectangle;
    import java.awt.image.BufferedImage;
    
    
    public class puntatore extends Thread {
        private int largh,x,y;
        private int alt;
        private boolean att;
        private final int vel=10;
        BufferedImage image;
        GraficaProgetto main;
        public puntatore(){}
        public puntatore(BufferedImage im, int y,int l, int a, GraficaProgetto m){
        x=150;
        this.alt=a;
        this.largh=l;
        this.image=im;
        this.y=y;
        this.main=m;
        }
        
         public void setx(int v){
        this.x=v;
        }
        
         public void sety(int v){
        this.y=v;
        }
         
          public void setl(int v){
        this.largh=v;
        }
           public void seta(int v){
        this.alt=v;
        }
            
           public int getx(){return x;}
           public int gety(){return y;}
           public int geta(){return alt;}
           public int getl(){return largh;}
           
          
          public void sopra(){
              if((y-alt)<main.getAltezza()){
           y+=vel;
           }
          }
           public void sotto(){
               if((y-alt)<main.getAltezza()){
                y-=vel;
           }
           }
           public void dis(Graphics g){
           g.drawImage(image, x, y, largh,alt,null);
           }
           public Rectangle getB(){
            return new Rectangle(x,y,largh,alt);
        }
    }
    
    
    package graficaprogetto;
    
    
    import java.awt.image.BufferedImage;
    import java.io.IOException;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    import javax.imageio.ImageIO;
    
    
    
    
    public class Caricatore {
         BufferedImage image;
        
        public BufferedImage caricaImmagini(String po) throws IOException{
        try{
            image=ImageIO.read(getClass().getResource(po));
        }
        catch(Exception e){
        System.out.println("Immagine alla posizione: "+po+" caricata correttamente");
        Logger.getLogger(Caricatore.class.getName()).log(Level.SEVERE,null,e);
        
        }
        return image;
    }
    }
    Ultima modifica di LeleFT; 12-04-2017 a 12:30 Motivo: Aggiunti i tag CODE

  2. #2
    Moderatrice di Grafica, Cerco e offro lavoro L'avatar di Myaku
    Registrato dal
    Nov 2006
    Messaggi
    10,349
    sposto in programmazione

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Quote Originariamente inviata da Bomber27 Visualizza il messaggio
    però il problema è la scelta del menù del frame
    Ti è già stato detto qui, da me, che per gestire la azione sui JMenuItem si registrano dei ActionListener su ciascuno di essi.

    Per il resto:
    - troppi campi static
    - design generale non buono
    - nomi di metodi/variabili messi un po' "a caso"

    Mancano basi basi basi basi ....
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2016
    Messaggi
    13
    Ho avuto anch'io dei problemi simili ..hai risolto?

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 © 2024 vBulletin Solutions, Inc. All rights reserved.