2011-10-27 5 views
2

메뉴 모음 및 해당 항목을 만들 때 아무런 문제가 없습니다. 그러나 이제는 메뉴 항목을 행 & 행 모양의 테이블 모양으로 표시하는 방법에 대해 질문 할 때 실제로 그것에 대해 알지 못합니다.Java swing : 행과 열의 메뉴 항목을 정렬하는 방법은 무엇입니까?

목표는 Java를 사용하여 이러한 종류의 메뉴 항목을 만드는 것입니다. Check this link.

는 그리고 지금, 난 그냥 다음 FlowLayout에 적용하고 많은 JLabel의 (들) 나는 메뉴 항목 그리드 내부에 예정대로 수 등을 추가 나는 메뉴 항목으로 인 JPanel를 사용해야한다고 생각합니다. 하지만 최악은 아니겠습니까? 위 링크의 이미지 미리보기와 같은 메뉴 항목을 만드는 가장 좋은 방법은 무엇입니까?

Google을 시도했지만 관련 사례를 찾지 못했습니다. CMIIW.

답변

6

JMenu 인스턴스의 팝업 메뉴는 표준 컨테이너이므로 원하는대로 추가 할 수 있습니다. 기본 레이아웃이 있지만 변경할 수 있습니다. 당신의 모형처럼

뭔가이 코드에 의해 생성됩니다

import javax.swing.*; 
import java.awt.*; 

public class Test { 
    public static void main(String[] args) { 
     EventQueue.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       JFrame frame = new JFrame("Menu test"); 
       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
       frame.setSize(new Dimension(600, 400)); 
       JMenuBar menuBar = new JMenuBar(); 
       JMenu menu = new JMenu("Test"); 
       JPopupMenu popupMenu = menu.getPopupMenu(); 
       popupMenu.setLayout(new GridLayout(5, 5)); 
       for (int r = 0; r < 5; r++) { 
        for (int c = 0; c < 5; c++) { 
         popupMenu.add(new JMenuItem("(" + (r + 1) + ", " + (c + 1) + ")")); 
        } 
       } 

       menuBar.add(menu); 
       frame.setJMenuBar(menuBar); 

       frame.setVisible(true); 
      } 
     }); 
    } 

} 
+0

이봐, 그것은 작동하고 ...! : D 좋은 – gumuruh

2

나는 이런 식으로 준비된 구성 요소를 보지 못했습니다. 그래서 나는 네가 혼자 있다고 생각해. 당신이 그것에 다른 구성 요소를 추가 할 수 있도록

  1. 의 JMenuItem는, JComponent에 있습니다 :

    나는 두 가지 가능성을 참조하십시오. 일종의 격자 기반 레이아웃을 사용하고 숫자에 대해 단추 나 레이블을 추가하려고합니다.

  2. 는 어떻게 이러한 구성 요소의 작업을 이해하기 위해 JMenu를 (항목)의 소스 코드를 살펴 가지고있는 경우 정상 JPopupMenu를

    대신

을 그리드 구성 요소를 표시 JMenuItem를 자신의 구현합니다.

1

가장 간단한 해결 방법은 JMenu를의 JPopupMenu의 레이아웃을 설정 한 후 평소와 같은 항목을 추가한다. 하위 클래스를 만들 필요가 없습니다.

예 :

import javax.swing.*; 
import java.awt.*; 

public class menu { 
    public static void main(String ... args) { 
     SwingUtilities.invokeLater(new Runnable() { 
       public void run() { 
        JMenuBar menuBar = new JMenuBar(); 

        JMenu menu = new JMenu("A regular menu"); 
        menu.add(new JMenuItem("Menu item")); 

        JMenu gridMenu = new JMenu("Menu with grid"); 
        // This does the trick: 
        gridMenu.getPopupMenu().setLayout(new GridLayout(2, 2)); 
        gridMenu.add("Top left"); 
        gridMenu.add("Top right"); 
        gridMenu.add("Bottom left"); 
        gridMenu.add("Bottom right"); 
        menu.add(gridMenu); 

        menuBar.add(menu); 

        JFrame frame = new JFrame("Menus"); 
        frame.setJMenuBar(menuBar); 
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
        frame.pack(); 
        frame.setVisible(true); 
       } 
      }); 
    } 
} 
+0

pheww ...! 고맙다 @ 단. 그것은 내가 menuItem 대신 단지 String 일 뿐이라는 데 도움이되었습니다. D – gumuruh

관련 문제