现在已实现JTable右键弹出菜单,但是有个小问题,就是在选中一行后,现在将鼠标移动到现有行外,右键点击空白处,此时要所有的行处于未选中状态,因为我要通过这个设定右键菜单的某些MenuItem的Enable属性,不知道有没有办法,请高手指点!
解决方案 »
- 面试Java工程师的时候会问到那些问题??
- spring jpa Unknown entity bean class
- 到华为去面试java程序员...
- 如何用servlet实现服务器推技术?(拜请各位大侠不吝赐教)
- hibernate连接SQLserver出错,Couldn't connect to database:No suitable driver!!!! Online for answer!!!!
- struts的简单问题,这个该怎么实现?
- 求救!weblogic8+struts的mapping问题
- jdom读取xml文件的问题
- struts结果显示问题。
- JBuilder7 中包的引用问题??急!!!
- webservice 传递复杂对象问题
- connect modify web.xml
关注 学习中...
LZ 努力 我一般出了问题都是自己乱弄乱试,呵呵,个人愚见
public interface MouseListener extends EventListener
{
public void mousePressed(MouseEvent e);
public void mouseExited(MouseEvent e);
}
package testGUI;import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;import javax.swing.JFrame;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableColumnModel;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;public class TestJFrame extends JFrame {
private static final long serialVersionUID = 1715591430628522795L; DefaultTableModel tablemodel = null; DefaultTableColumnModel tablecolumnmodel = null; TableColumn[] tablecolumn = null; JTable table = null; public static void main(String[] args) {
new TestJFrame(); } public TestJFrame() {
init();
} private void init() {
this.getContentPane().setLayout(new BorderLayout());
this.getContentPane().add(getCenterPanel(),BorderLayout.NORTH);
this.getContentPane().add(getSouthPanel(),BorderLayout.CENTER);
this.pack();
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setVisible(true);
} private JPanel getCenterPanel() {
JPanel panel = new JPanel();
table = new JTable(getTableModel(), getTableColumnModel());
addRow();
JScrollPane js = new JScrollPane(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
js.getViewport().add(table);
panel.add(js);
return panel;
} private JPanel getSouthPanel() {
JPanel panel = new JPanel();
panel.setPreferredSize(new Dimension(100,100));
panel.addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent evt) {
if (evt.getButton() == MouseEvent.BUTTON3) {
table.clearSelection();
showPopMenu(evt.getComponent(), evt.getX(), evt.getY());
}
} public void mouseReleased(MouseEvent e) {
}
});
return panel;
} protected void showPopMenu(Component _compent, int _x, int _y) {
JPopupMenu popmenu_header = new JPopupMenu();
JMenuItem item_column_modify = new JMenuItem("Test");
popmenu_header.add(item_column_modify);
popmenu_header.show(_compent, _x, _y);
} private DefaultTableModel getTableModel() {
if (tablemodel == null) {
Object[] name = { "", "", "", "", "" };
Object[][] data = new Object[0][5]; tablemodel = new DefaultTableModel(data, name) { private static final long serialVersionUID = 5702753926909285134L; public boolean isCellEditable(int row, int column) {
return false;
}
};
}
return tablemodel;
} private DefaultTableColumnModel getTableColumnModel() {
if (tablecolumnmodel == null) {
tablecolumnmodel = new DefaultTableColumnModel();
for (int i = 0; i < 5; i++) {
tablecolumnmodel.addColumn(getTableColumn()[i]);
}
}
return tablecolumnmodel;
} private TableColumn[] getTableColumn() {
if (tablecolumn == null) {
tablecolumn = new TableColumn[5];
for (int i = 0; i < 5; i++) {
tablecolumn[i] = new TableColumn(i);
tablecolumn[i].setCellRenderer(null);
}
tablecolumn[0].setHeaderValue("aa");
tablecolumn[1].setHeaderValue("bb");
tablecolumn[2].setHeaderValue("cc");
tablecolumn[3].setHeaderValue("dd");
tablecolumn[4].setHeaderValue("ee");
}
return tablecolumn;
} protected void addRow() {
Object[] obj = new Object[5];
obj[0] = "11";
obj[1] = "22";
obj[2] = "33";
obj[3] = "44";
obj[4] = "55";
for (int i = 0; i < 3; i++) {
getTableModel().addRow(obj);
}
}
}