문제

NetBeans IDE에서 JTable에 오른쪽 클릭 팝업 메뉴를 추가하고 싶습니다 (간단한 작업처럼 보입니다 ... LOL)

나는 부분적으로

에 그것을 얻었습니다.

  1. 양식에 popupmenu 추가
  2. popupmenu
  3. 에 menuItems 추가
  4. jtable
  5. 를 제대로 가라.
  6. 바인딩 탭
  7. 를 클릭하십시오.
  8. componentPopupMenu 값을 내 popupmenu
  9. 로 설정합니다.

    그러나 이것은 부분적으로 만 작동합니다. 이제는 테이블을 마우스 오른쪽 버튼으로 클릭하면 메뉴가 팝업되지만 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에 대답 할 수 있기를 바랍니다 ... 그리고 이것이 누군가를 돕기를 바랍니다

  1. 양식에 popupmenu를 추가하십시오 (다른 구성 요소에 나오는). 예를 들어 jpopupmenu
  2. popupmenu
  3. 에 menuItems 추가
  4. jtable의 적절한 (예를 들어 jtableDateSormething)
  5. 호출로 이동하십시오.
  6. 바인딩 탭을 클릭하면 (또는 JTable 바인드> 요소를 마우스 오른쪽 버튼으로 클릭하십시오)
  7. componentPopupmenu 값을 내 호출 JPopupMenu

    설정

    다음 단계,

  8. 등록 정보에서 이벤트를 선택하는 동안 이벤트를 선택하는 동안 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());
    }
    }
    
  9. 각 메뉴 항목에 대해 수행 된 MenuItem 동작 생성

    그런 다음 거기에서 다음을 사용할 수 있습니다 :

        int[] rows = jTableDataOrSomething.getSelectedRows();
        for (int row : rows) {
            boolean j = true;
            try {
                modelRow = jTableDataOrSomething.convertRowIndexToModel(row);
                //do something with the selected rows...
    
  10. 이것은 다중 선택을 사용하고 정렬 / 필터링을 고려합니다.

    함수를 마칩니다.
        jTableDataOrSomething.repaint();
    
    .

    즐기기

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top