I'm lost how to do it with a JTable.
This code is not running
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.*;
class PopupListener extends MouseAdapter {
JPopupMenu m_pmnPopup;
public PopupListener(JPopupMenu pmnPopup) {
m_pmnPopup = pmnPopup;
}
public void mousePressed(MouseEvent e) {
maybeShowPopup(e);
}
public void mouseReleased(MouseEvent e) {
maybeShowPopup(e);
}
void maybeShowPopup(MouseEvent e) {
if (e.isPopupTrigger()) {
m_pmnPopup.show(e.getComponent(),
e.getX(), e.getY());
}
}
}
class MyTableColumn extends TableColumn {
public MyTableColumn(int modelIndex) {
super(modelIndex);
JPopupMenu pmnPopupHeader = new JPopupMenu();
pmnPopupHeader.add(new JMenuItem("header1"));
pmnPopupHeader.add(new JMenuItem("header2"));
pmnPopupHeader.add(new JMenuItem("header3"));
// ((Component)getHeaderRenderer()).addMouseListener(new
PopupListener(pmnPopupHeader));
JPopupMenu pmnPopupCell = new JPopupMenu();
pmnPopupCell.add(new JMenuItem("cell1"));
pmnPopupCell.add(new JMenuItem("cell2"));
pmnPopupCell.add(new JMenuItem("cell3"));
// ((Component)getCellRenderer()).addMouseListener(new
PopupListener(pmnPopupCell));
}
}
public class Main {
static JFrame m_frame;
static final int NUMBER_OF_COLUMNS = 100;
public static void main(String[] ARGS){
m_frame = new JFrame("Teste");
m_frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
m_frame.getContentPane().setLayout(new BorderLayout());
JTable table = new JTable();
table.setModel(new AbstractTableModel(){
public int getRowCount() {
return 2047;
}
public int getColumnCount() {
return NUMBER_OF_COLUMNS;
}
public Object getValueAt(int arg0, int arg1) {
return new Integer(arg0*arg1);
}});
table.setAutoCreateColumnsFromModel(false);
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
for (int nColumn = 0; nColumn < NUMBER_OF_COLUMNS; nColumn++) {
table.addColumn(new MyTableColumn(nColumn));
}
JScrollPane scrollPane = new JScrollPane(table);
m_frame.getContentPane().add(scrollPane, BorderLayout.SOUTH);
JLabel label = new JLabel("XXX");
JPopupMenu pmnPopup = new JPopupMenu();
pmnPopup.add(new JMenuItem("item1"));
pmnPopup.add(new JMenuItem("item2"));
pmnPopup.add(new JMenuItem("item3"));
label.addMouseListener(new PopupListener(pmnPopup));
m_frame.getContentPane().add(label, BorderLayout.NORTH);
m_frame.pack();
m_frame.setVisible(true);
}
}
For the JLabel works but for the JTable don't.
In the Cell case I'have to know the Row as well.
Thanks
Marcos
-----Original Message-----
From: Meikel Bisping [mailto:[EMAIL PROTECTED]
Sent: Wednesday, January 28, 2004 1:03 PM
To: [EMAIL PROTECTED]; [EMAIL PROTECTED]
Subject: Re: right click open one menu
Try JPopupMenu
http://java.sun.com/docs/books/tutorial/uiswing/components/menu.html
[EMAIL PROTECTED] schrieb am 28.01.2004:
>I need to create one menu with some options if right click in one
>component.
>
>
>Is this possible?
>
>Thanks
>MArcos
>_______________________________________________
>Swing mailing list
>[EMAIL PROTECTED]
>http://eos.dk/mailman/listinfo/swing
>
>
_______________________________________________
Swing mailing list
[EMAIL PROTECTED]
http://eos.dk/mailman/listinfo/swing