2012-05-18 2 views
3

내 메뉴에 세로 JSeparator를 추가하려고합니다. 하지만 그것은 내 MenuItems 사이에 여백을 넣습니다. 왼쪽 - 가운데 - 오른쪽 대신 항목을 남겨 둡니다. 보이는 방법자바 JMenuBar : 세로 JSeparator

: enter image description here

JMenu settings = new JMenu("Settings"); 
    image = ImageIO.read(new File(Constants.IMAGES_DIR + File.separator + "settings.png")); 
    settings.setHorizontalTextPosition(SwingConstants.CENTER); 
    settings.setVerticalTextPosition(SwingConstants.BOTTOM); 
    settings.setIcon(new ImageIcon(image)); 
    add(settings); 

    JMenu build = new JMenu("Builder"); 
    image = ImageIO.read(new File(Constants.IMAGES_DIR + File.separator + "build.png")); 
    build.setHorizontalTextPosition(SwingConstants.CENTER); 
    build.setVerticalTextPosition(SwingConstants.BOTTOM); 
    build.setIcon(new ImageIcon(image)); 
    add(build); 

    add(new JSeparator(JSeparator.VERTICAL)); 

    JMenu help = new JMenu("Help"); 
    image = ImageIO.read(new File(Constants.IMAGES_DIR + File.separator + "help.png")); 
    help.setHorizontalTextPosition(SwingConstants.CENTER); 
    help.setVerticalTextPosition(SwingConstants.BOTTOM); 
    help.setIcon(new ImageIcon(image)); 
    add(help); 

당신은 내가 원하는 것을 이해 바랍니다 : 내가 원하는 무엇 enter image description here .

+0

더 나은 도움을 받으려면 [SSCCE] (http://sscce.org/)를 게시하십시오. BTW - 원하는 효과를 나타 내기 위해 폭이 1554 픽셀 인 이미지가 필요하지 않았습니다! [스크린 샷을 만드는 방법은 무엇입니까?] (http://meta.stackexchange.com/questions/99734/how-do-i-create-a-screenshot-to-illustrate-a-post) (* 위대한 * 스크린 샷). –

+0

'JToolBar'에 어떤 레이아웃을 사용하고 있습니까? –

답변

3

JMenuBar 대신 JToolBar를 사용하여이 작업을 수행하는 것이 좋습니다. 그러나 경우에 당신은//의 JMenuBar 여기 예를 간다 사용하여 할 좋아해야합니다 간단한 단어에서

public class Test { 
    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       JFrame frame = new JFrame(); 

       JMenuBar bar = new JMenuBar(); 
       bar.setLayout(new MigLayout()); 

       JMenu listSth = new JMenu("A"); 
       listSth.setHorizontalTextPosition(SwingConstants.CENTER); 
       listSth.setVerticalTextPosition(SwingConstants.BOTTOM); 
       bar.add(listSth); 

       JSeparator sep1 = new JSeparator(JSeparator.VERTICAL); 
       bar.add(sep1, "growy"); 
       JMenu module = new JMenu("B"); 
       module.setHorizontalTextPosition(SwingConstants.CENTER); 
       module.setVerticalTextPosition(SwingConstants.BOTTOM); 
       bar.add(module); 

       JMenu settings = new JMenu("Settings"); 
       settings.setHorizontalTextPosition(SwingConstants.CENTER); 
       settings.setVerticalTextPosition(SwingConstants.BOTTOM); 
       bar.add(settings); 

       JMenu build = new JMenu("Builder"); 
       build.setHorizontalTextPosition(SwingConstants.CENTER); 
       build.setVerticalTextPosition(SwingConstants.BOTTOM); 
       bar.add(build); 

       JSeparator sep2 = new JSeparator(JSeparator.VERTICAL); 
       bar.add(sep2, "growy"); 

       JMenu help = new JMenu("Help"); 
       help.setHorizontalTextPosition(SwingConstants.CENTER); 
       help.setVerticalTextPosition(SwingConstants.BOTTOM); 
       bar.add(help); 

       frame.setJMenuBar(bar); 
       frame.pack(); 
       frame.setSize(400, 300); 
       frame.setLocationRelativeTo(null); 

       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
       frame.setVisible(true); 
      } 
     }); 
    } 
} 

을 - 당신은 MigLayout을 사용하고 JSeparators에 "growy"설정할 수 있습니다. 다른 레이아웃을 사용하는 다른 솔루션이 많이 있습니다.

관련 문제