Jtable Щелкните правой кнопкой мыши Popupmenu в NetBeans
-
15-09-2020 - |
Вопрос
Я хочу добавить правой кнопкой мыши POPUPMENU на JTable в IDE NetBeans (кажется простой задачей ... LOL)
Я получил его в частично работать с
- Добавление всплывающую к форме
- Добавление меню впутников
- Перейти к jtable
- Нажмите на вкладку Binding
- Установите компонентпопупменю ценность для моей всплывающейся
Но это только частично работает. Теперь я, когда я щелкнул Щелксу на таблицу, появится меню, но выбранная строка в JTable не меняется.Таким образом, когда Action MenueMeMed вызывается, я понятия не имею, какой ряд в JTable нажал.
Как я могу получить это?Или есть ли более простым способом сделать это в NetBeans?
Я знаю, что есть другие способы для этого (в коде), но я бы предпочел использовать Betbeans GUI Builder.
кто-нибудь когда-либо делал это раньше?
Спасибо за вашу помощь!
Решение
Почему вы полагаетесь на IDE, чтобы генерировать код для вас?Что произойдет, когда вы переезжаете на другую IDE, и вы должны научиться делать это для этого IDE?Узнайте, как написать свой собственный код, то IDE не имеет значения:
table.addMouseListener( new MouseAdapter()
{
public void mouseReleased(MouseEvent e)
{
if (e.isPopupTrigger())
{
JTable source = (JTable)e.getSource();
int row = source.rowAtPoint( e.getPoint() );
int column = source.columnAtPoint( e.getPoint() );
if (! source.isRowSelected(row))
source.changeSelection(row, column, false, false);
popup.show(e.getComponent(), e.getX(), e.getY());
}
}
});
. Другие советы
Надеюсь, я могу ответить на него за NetBeans ... и я надеюсь, что это поможет кому-то
- добавление всплывающую к форме (она идет в других компонентах). JPopupmenu например
- Добавление меню впутников
- Перейти к jtable jtable (называть его jtabledataorsomething, например)
- Нажмите на вкладку Binding (или щелкните правой кнопкой мыши на элементах связывания JTable)
-
Установите компонентPopupmenu Value на мой называемый jpopupmenu
Следующие шаги,
-
пока в свойствах выберите события и goto mousereleased Установите его на ваш jtabledataorsomething (или щелкните правой кнопкой мыши на столе, событиям> мышь> Mousereledate)
NetBeans создает пустую функцию и установить следующий код
private void jTableDataOrSomethingMouseReleased(java.awt.event.MouseEvent evt) { if (evt.isPopupTrigger()) { JTable source = (JTable)evt.getSource(); int row = source.rowAtPoint( evt.getPoint() ); int column = source.columnAtPoint( evt.getPoint() ); if (!source.isRowSelected(row)) { source.changeSelection(row, column, false, false); } jPopupMenu.show(evt.getComponent(), evt.getX(), evt.getY()); } }
-
Создать действие меню, выполненное для каждого элемента меню
Тогда там вы можете использовать:
int[] rows = jTableDataOrSomething.getSelectedRows(); for (int row : rows) { boolean j = true; try { modelRow = jTableDataOrSomething.convertRowIndexToModel(row); //do something with the selected rows...
Это принимает многократный выбор и учитывает сортировку / фильтрацию.
Завершите функцию с
jTableDataOrSomething.repaint();
.
Наслаждайтесь