Icone no JMenu

5 respostas
R

Galera tudo blz???

Estou com uma dúvida. Eu criei um JMenuBar e dentro deles os Sub Menus(JMenuItem) mais dentro de esse menu precisei inserir outro sub Menu que no caso tive que transformar o outro MenuItem em JMenu, e coloquei icones em cada menus, mais no que eu transformei em JMenu não consigue. É possivel colocar o ícone no JMenu?

Segue anexo uma parte do código.

JMenuBar menu = new JMenuBar();
      
      JMenu Cadastro = new JMenu("Cadastro");
      Cadastro.setMnemonic(KeyEvent.VK_C);//Tecla de Atalho.
      Cadastro.setVisible(true); 
      menu.add(Cadastro);
      setJMenuBar(menu);

//Aqui eu gostaria de colocar o Ícone
Cliente = new JMenu("Cliente");
      Cliente.setMnemonic(KeyEvent.VK_C);
      Cliente.setVisible(true);
      Cadastro.add(Cliente);
      
      	ImageIcon iconeclientefisico = createImageIcon("icones/clientefisico.png");
      	ClienteFisico = new JMenuItem("Cliente Físico",iconeclientefisico);
      	ClienteFisico.setMnemonic(KeyEvent.VK_F);
      	ClienteFisico.setVisible(true);
      	Cliente.add(ClienteFisico);
      
      	ImageIcon iconeclientejuridico = createImageIcon("icones/clientejuridico.png");
      	ClienteJuridico = new JMenuItem("Cliente Jurídico",iconeclientejuridico);
      	ClienteJuridico.setMnemonic(KeyEvent.VK_F);
      	ClienteJuridico.setVisible(true);
      	Cliente.add(ClienteJuridico);

5 Respostas

Petronio_Braga

Rodrigo,

é possível sim colocar ícones no JMenu.

Em anexo à mensagem, estou lhe enviando um arquivo exemplificando.

Espero ter ajudado.

R

Opa muito obrigado pelo exemplo, mais eu fui rodar ele e não funcionou deu um monte de erro, nem tive como vizualizar ele.

Aguardo a resposta Obrigado.

:smiley:

Petronio_Braga

Rodrigo,

está aí.

Os erros era decorrente da falta da classe ConstantesImage. Por isso, ela vai em anexo também.

Agora muda, na classe ConstantesImages os nomes das figuras.

Sem mais.

R

Opaaa agora simmmm :smiley:

Muito Obrigado em t++++

everton.jb

Meu eu sou super novato nisso e nao entendi ainda como fazer para mudar o icone da barra de titulos do JFrame e tambem nao entendi como colocar um icone em um JMenu como segue no exemplos de voce.
se nao for encomodar muito eu vou colocar o meu codigo aqui e voces modificam para que eu possa colocar um icone.

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.BorderFactory;
import javax.swing.JOptionPane;
import javax.swing.JMenuBar;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import java.awt.Toolkit;
import java.awt.Image;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.Color;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class Sudoku extends JFrame implements ActionListener{
	/*Declaração de atributos da classe*/
	private JButton [][] botao = new JButton[9][9];
	private int [] novo = new int[20];
	private JFrame win = new JFrame("Sudoku");
	private JPanel [] painel = new JPanel[9]; 
	
	private JMenuBar barra = new JMenuBar();
	private JMenu menu1 = new JMenu("Opçoes");
    private JMenuItem item1 = new JMenuItem("Novo Jogo");
    private JMenuItem item2 = new JMenuItem("Sobre...");
    private JMenuItem item3 = new JMenuItem("Sair");
	/*Construtor da Classe ele faz os botoes e a janela*/		
	public Sudoku(){
		fazBotao();
		fazJanela();
		novoJogo();
	}
	/*Metodo que faz o meno da Barra de Menu*/
	public JMenuBar menu(){
     	item1.addActionListener(this);
     	menu1.add(item1);
     	item2.addActionListener(this);
     	menu1.add(item2);
     	item3.addActionListener(this);
     	menu1.add(item3);
     	barra.add(menu1);
     	return barra;
    }
	/*Metodo que faz os botoes*/
	public void fazBotao(){
		for(int i = 0; i < botao.length; i++){
			painel[i] = new JPanel(new GridLayout(3,3));
			painel[i].setBorder(BorderFactory.createLineBorder(Color.BLACK, 1));
			for(int j = 0; j < botao.length; j++){
				botao[i][j] = new JButton();
				botao[i][j].setText(" ");
				botao[i][j].addActionListener(this);
				painel[i].add(botao[i][j]);
			}
		}
	}
	/*Metodo que faz as janelas*/
	public void fazJanela(){
		Toolkit tk = Toolkit.getDefaultToolkit();   
		Image img = tk.getImage("image.gif");   
		win.setIconImage(img);
		
		win.setJMenuBar(menu());
		win.getContentPane().setLayout(new GridLayout(3,3));
		win.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		for(int i = 0; i < painel.length; i++){ 
			win.getContentPane().add(painel[i]);
		}
		//win.pack();
		win.setSize(390,350);
		win.setResizable(false);	/*Nao possibilita a maximizaçao!!*/
		win.setVisible(true);	
	}
	/*Metodo que inicia um novo Jogo*/
	public void novoJogo(){
		int lin, col;
		boolean val;
		
		for(int i = 0; i < novo.length; i++){
			novo[i] = (int) (1 + (Math.random() * 9));
		}
		
		for(int i = 0; i < botao.length; i++){
			for(int j = 0; j < botao.length; j++){
				botao[i][j].setText(" ");
			}
		}
		
		for(int i = 0; i < novo.length; i++){
			lin = (int) (Math.random() * 9);
			col = (int) (Math.random() * 9);
			botao[lin][col].setText(String.valueOf(novo[i]));
		}
	}			
	/*Metodo que gerencia os Eventos da Classe*/
	public void actionPerformed(ActionEvent e){
		String n = " ";
		int nro;
		
		/*No menu Novo Jogo*/
		if(e.getSource() == item1){
			novoJogo();
		}
		/*No menu Sobre...*/
		if(e.getSource() == item2){
			JOptionPane.showMessageDialog(null, "Sudoku: \n" +
												"Um jogo de raciocinio logico com o" +
												"\nintuito de desenvolver o raciocinio logico.\n" + 
												"Desenvolvedores:" +
												"\nEverton José Benedicto RA. 0510688" +
												"\nEdson Soares da Silva RA. 0711232","Sobre Sudoku", JOptionPane.WARNING_MESSAGE);
		}
		/*No menu Sair*/
		if(e.getSource() == item3){
			System.exit(0);
		}
		/*Aqui eu vou gerenciar os eventos de cada botao do Array*/
		for(int i = 0; i < botao.length; i++){
			for(int j = 0; j < botao.length; j++){
				if(e.getSource() == botao[i][j]){
					do{	/*loop de integridade de dado*/
						nro = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite o numero", "Sudoku", JOptionPane.WARNING_MESSAGE));
						if(nro <= 0 || nro > 9){
							JOptionPane.showMessageDialog(null, "Numero Inválido", "Sudoku Notifica", JOptionPane.WARNING_MESSAGE);
						}
					}while(nro <= 0 || nro > 9);/*Fim do loop*/
					n = n.valueOf(nro);
					botao[i][j].setText(n);
					if(e.getSource() == botao[i][j]){
						break;
					}
				}
			}
		}
		/*Fim dos Eventos*/
		
	}
	/*Metodo Principal Chamando o Construtor*/
	public static void main(String args[]){
		new Sudoku();
	}
}

Muito Obrigado estou no aguardo… :smiley:

Criado 26 de maio de 2006
Ultima resposta 11 de nov. de 2007
Respostas 5
Participantes 3