JTable NetBeans에서 PopUpMenu를 마우스 오른쪽 단추로 누릅니다
-
15-09-2020 - |
문제
NetBeans IDE에서 JTable에 오른쪽 클릭 팝업 메뉴를 추가하고 싶습니다 (간단한 작업처럼 보입니다 ... LOL)
나는 부분적으로
에 그것을 얻었습니다.- 양식에 popupmenu 추가
- popupmenu 에 menuItems 추가
- jtable 를 제대로 가라.
- 바인딩 탭 를 클릭하십시오.
- componentPopupMenu 값을 내 popupmenu 로 설정합니다.
그러나 이것은 부분적으로 만 작동합니다. 이제는 테이블을 마우스 오른쪽 버튼으로 클릭하면 메뉴가 팝업되지만 JTable의 선택한 행이 변경되지 않습니다.따라서 MenuItem의 ActionPerformed가 호출되는 경우 JTable의 행이 무엇을 클릭했는지 전혀 알지 못합니다.
어떻게 이것을 얻을 수 있습니까?아니면 NetBeans 에서이 작업을 수행 할 수있는 방법이 있습니까?
코드 에서이 작업을 수행하는 방법이 있지만 NetBeans 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에 대답 할 수 있기를 바랍니다 ... 그리고 이것이 누군가를 돕기를 바랍니다
- 양식에 popupmenu를 추가하십시오 (다른 구성 요소에 나오는). 예를 들어 jpopupmenu
- popupmenu 에 menuItems 추가
- jtable의 적절한 (예를 들어 jtableDateSormething) 호출로 이동하십시오.
- 바인딩 탭을 클릭하면 (또는 JTable 바인드> 요소를 마우스 오른쪽 버튼으로 클릭하십시오)
-
componentPopupmenu 값을 내 호출 JPopupMenu
설정다음 단계,
-
등록 정보에서 이벤트를 선택하는 동안 이벤트를 선택하는 동안 jtableDataOrsorithing (테이블, 이벤트> 마우스> usereleased) jtableDateSormething (또는 마우스 오른쪽 버튼을 클릭하십시오)
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()); } }
-
각 메뉴 항목에 대해 수행 된 MenuItem 동작 생성
그런 다음 거기에서 다음을 사용할 수 있습니다 :
int[] rows = jTableDataOrSomething.getSelectedRows(); for (int row : rows) { boolean j = true; try { modelRow = jTableDataOrSomething.convertRowIndexToModel(row); //do something with the selected rows...
이것은 다중 선택을 사용하고 정렬 / 필터링을 고려합니다.
함수를 마칩니다.
jTableDataOrSomething.repaint();
.
즐기기