Ola!
Estou com o seguinte problema:
Tenho uma JTable e ao pressionar com o botão direito do mouse dentro desta tabela, eu seleciono a linha da tabela onde o cursor se encontra e abro um JPopupMenu com dois itens.
Quando eu passo o mouse por cima destes itens (JMenuItem), eles nao são selecionados ( o background do item nao muda de cor), eu acho q por padrão ele deveria selecionar o item automaticamente.
Eu quero que a aplicação selecione os itens quando o cursor do mouse passar por cima deles.
Alguem ja passou por isto e teria a solução deste problema?
Itens de um JPopupMenu nao são selecionados[Resolvido]
C
4 Respostas
C
Pode ter ficado um pouco confuso a minha explicação!
Vou passar um codigo aqui:
Basta clicar com o botao direito e note q os itens nao sao selecionados quando o cursor do mouse passa por cima deles.
import java.awt.BorderLayout;
import java.awt.TrayIcon;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.table.DefaultTableModel;
/**
* @author Carlaum
*/
public class ExemploTabelaMenu extends JFrame
{
JPopupMenu popUp;
ImageIcon icone;
TrayIcon trayIcon;
JTable tabela;
DefaultTableModel modeloTabela;
JPanel panel;
Object[] colunas =
{
"Coluna1", "Coluna2", "Coluna3"
};
Object[][] linhas =
{
};
public ExemploTabelaMenu()
{
this.setTitle("Exemplo de Tabela com JPopupMenu");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(640, 480);
this.setLocationRelativeTo(null); // Faz a janela ser criada no centro da tela
this.criaMenu();
panel = new JPanel(new BorderLayout());
//Cria o modelo da tabela
modeloTabela = new DefaultTableModel(linhas, colunas);
//Cria a tabela
tabela = new JTable(modeloTabela);
tabela.addMouseListener(
new MouseAdapter()
{
public void mouseClicked(MouseEvent eventoMouse)
{
if (eventoMouse.getButton() == MouseEvent.BUTTON3)
{
popUp.setVisible(false);
popUp.setLocation(eventoMouse.getXOnScreen(), eventoMouse.getYOnScreen());
popUp.setVisible(true);
}
else
{
popUp.setVisible(false);
}
}
});
tabela.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
panel.add(tabela, BorderLayout.CENTER);
Object[] item =
{
"linha1 item1", "linha1 item2", "linha1 item3"
};
Object[] item2 =
{
"linha2 item1", "linha2 item2", "linha2 item3"
};
modeloTabela.addRow(item);
modeloTabela.addRow(item2);
this.add(panel);
this.setVisible(true);
}
/**
* Cria o JPopupMenu e os JMenuItems
*/
private void criaMenu()
{
popUp = new JPopupMenu();
JMenuItem item1 = new JMenuItem("Teste");
item1.addActionListener(
new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
popUp.setVisible(false);
}
});
JMenuItem item2 = new JMenuItem("Sair");
item2.addActionListener(
new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
System.exit(0);
}
});
popUp.add(item1);
popUp.addSeparator();// adiciona uma linha no popupMenu
popUp.add(item2);
}
public static void main(String args[])
{
new ExemploTabelaMenu();
}
}
C
Ola!
Achei interessante esse codigo que vc me passou mas o meu problema esta mesmo em selecionar os itens do JPopupMenu e nao as celulas da JTable!
No meu programa eu seleciono as selulas da JTable mas esse exemplo que passei é bem simples que mostra apenas q os itens do JPopupMenu nao estao sendo selecionados.
Abraço
C
Consegui solucionar o problema!
é so mudar a forma como eu chamo o JPopupMenu.
Segue a solução:
tabela.addMouseListener(
new MouseAdapter(){
public void mouseReleased(MouseEvent e){
if(e.isPopupTrigger())
popUp.show(e.getComponent(), e.getX(), e.getY());
}
}
);
Criado 27 de outubro de 2009
Ultima resposta 27 de out. de 2009
Respostas 4
Participantes 2
Alura O que é Python? — um guia completo para iniciar nessa linguagem de programação Acesse agora o guia sobre Python e inicie sua jornada nessa linguagem de programação: o que é e para que serve, sua sintaxe e como iniciar nela!
Casa do Codigo Engenharia de Prompt para Devs: Um guia para aprender a... Por Ricardo Pupo Larguesa — Casa do Codigo