Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    883

    (java) Come aggiungere un bordo a jmenuitem

    Ho messo un bordo ai bottoni di un jmenu
    Purtroppo quando ci passo sopra con il mouse, non sono molto "stabili" hanno un effetto traballante
    Come posso fare a toglierlo?

    Ho postato un codice compilante, se lo eseguite dovete ridimensionare il frame altrimenti i jmenu item non compaiono

    codice:
    import java.awt.Dimension;
    import java.awt.Insets;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseListener;
    import java.io.File;
    import java.util.Hashtable;
    
    import javax.swing.*;
    
    public class MenuBar extends JMenuBar implements MouseListener {
    
    	public static JMenu menuFile;
    	public static JMenu menuPlugin;
    	public static JMenuItem miExit;
    
    	public static Hashtable menuItems = new Hashtable();
    
    	private static Hashtable commands;
    	private static JMenuBar menubar;
    
    	public MenuBar() {
    		super();
    		
    		JMenu menu;	
    
    		//make menu file
    		menuFile = new JMenu("file");
    		menuFile.addMouseListener(this);
    		add(menuFile);
    		
    		//make menu edit
    		menu = new JMenu("edit");
    		menu.addMouseListener(this);		
    		add(menu);
    
    		//make menu search
    		menu = new JMenu("search");
    		menu.addMouseListener(this);		
    		add(menu);
    	} //end constructor	
    
    	public void mouseClicked(MouseEvent arg0) {
    	}
    
    	public void mouseEntered(MouseEvent arg0) {		
    		Object obj = arg0.getSource();
    		if (obj instanceof JMenuItem) {			
    			JMenuItem button = (JMenuItem) obj;
    			button.setBorder(BorderFactory.createRaisedBevelBorder());			
    		}
    	}
    
    	public void mouseExited(MouseEvent arg0) {	
    		Object obj = arg0.getSource();
    		if (obj instanceof JMenuItem) {
    			JMenuItem button = (JMenuItem) obj;
    			button.setBorder(null);			
    		}
    
    	}
    
    	public void mousePressed(MouseEvent arg0) {		
    	}
    
    	public void mouseReleased(MouseEvent arg0) {
    	}
    
    		public static void main (String[] args) {
    			
    		JFrame f = new JFrame();
    		f.setJMenuBar(new MenuBar());		
    		f.setVisible(true);
    		f.setSize(400, 200);
    }
    } // end class

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    883
    Quando passo il mouse sopra il jmenuitem, viene creato il bordo che gli ho assegnato.
    Nel creare il bordo si crea il difetto di "movimento dei jmenuitem" cioè è come se quando viene creato il bordo il jmenuitem avesse bisogno di più spazio e questo genera l'effetto indesiderato di spostamento dei bottone.
    Ho provato ad assegnare più spazio ai vari jmenuitem ma non ci sono riuscito.
    Qualche idea?

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Prova a creare lo stesso il bordo ma ad assergnargli il colore dello sfondo quando il mouse non è sopra, mentre gli cambi i colori quandi il mouse ci passa sopra, rendendolo visibile.


    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

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    883
    ha funzionato mettendo un empty border della stessa dimensione del bordo che viene creato quando si apssa sopra con il mouse:

    codice:
    import java.awt.Dimension;
    import java.awt.Insets;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseListener;
    import java.io.File;
    import java.util.Hashtable;
    
    import javax.swing.*;
    import javax.swing.border.*;
    
    public class MenuBar extends JMenuBar implements MouseListener {
    
    	public static JMenu menuFile;
    	public static JMenu menuPlugin;
    	public static JMenuItem miExit;
    
    	public static Hashtable menuItems = new Hashtable();
    
    	private static Hashtable commands;
    	private static JMenuBar menubar;
    	
    	int space = 2;
    	public MenuBar() {
    		super();
    		
    		JMenu menu;	
    
    		//make menu file
    		menuFile = new JMenu("file");
    		menuFile.addMouseListener(this);
    		menuFile.setBorder(new EmptyBorder(space,space,space,space));
    		add(menuFile);
    		
    		//make menu edit
    		menu = new JMenu("edit");
    		menu.addMouseListener(this);	
    		menu.setBorder(new EmptyBorder(space,space,space,space));	
    		add(menu);
    
    		//make menu search
    		menu = new JMenu("search");
    		menu.addMouseListener(this);
    		menu.setBorder(new EmptyBorder(space,space,space,space));		
    		add(menu);
    	} //end constructor	
    
    	public void mouseClicked(MouseEvent arg0) {
    	}
    
    	public void mouseEntered(MouseEvent arg0) {		
    		Object obj = arg0.getSource();
    		if (obj instanceof JMenuItem) {			
    			JMenuItem button = (JMenuItem) obj;
    			button.setBorder(BorderFactory.createRaisedBevelBorder());			
    		}
    	}
    
    	public void mouseExited(MouseEvent arg0) {	
    		Object obj = arg0.getSource();
    		if (obj instanceof JMenuItem) {
    			JMenuItem button = (JMenuItem) obj;
    			button.setBorder(new EmptyBorder(space,space,space,space));		
    		}
    
    	}
    
    	public void mousePressed(MouseEvent arg0) {		
    	}
    
    	public void mouseReleased(MouseEvent arg0) {
    	}
    
    		public static void main (String[] args) {
    			
    		JFrame f = new JFrame();
    		f.setJMenuBar(new MenuBar());		
    		f.setVisible(true);
    		f.setSize(400, 200);
    }
    } // end class

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.