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

P

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:

P

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++++

E

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