2013-11-25 4 views
0

Java로 Windows GUI 시뮬레이션을 만들고 싶지만 바탕 화면 아이콘 위로 창을 배치하는 데 문제가 있습니다. 동일한 컨테이너 (JDesktopPane)에 바탕 화면 아이콘 (JButtons)과 창 (JInternalFrame을 사용하여 만든)을 놓으려고했으나 창이 아이콘을 멀리 밀었습니다. JLayeredPane에 컨테이너 2 개 (바탕 화면 1 개, 창 1 개)를 배치하면 데스크탑 아이콘을 클릭 할 수 없다고 생각합니까?Java에서 JLayeredPane과 함께 JDesktopPane 사용

다른 접근 방법이 있습니까?

편집 : 추가 정보 :

내가 바탕 화면, 바탕 화면 아이콘 및 창문, 윈도우 탐색기의 시뮬레이션을 만들고 싶어. 바탕 화면 (아이콘 포함)을 창과 다른 계층에 놓기를 원합니다. 어떻게해야합니까? JLayeredPane을 사용하면 해당 레이어가 windows 레이어로 덮여 있기 때문에 아이콘을 클릭 할 수 없습니다.

+0

무엇을, 어디서, 어떻게, 왜, 빨리 SSCCE, 짧은 실행 가능한, – mKorbel

+0

컴파일 가능한 내 전체 프로그램을 게시 할 것을 게시 더 나은 도움을. 나는 올바른 방향으로 나를 가리키게 할 무언가가 필요하다. 나는 질문을 더 많은 정보로 업데이트 할 것이다. –

답변

0

JDesktopPane에 버튼을 추가 할 수 있습니다. JDesktopPane에는 레이아웃 관리자가 없으므로 크기와 위치를 지정하는 것을 잊지 마세요. 다음은 예입니다

enter image description here

import java.awt.Color; 
import java.awt.Dimension; 
import java.awt.Point; 
import java.awt.Rectangle; 
import javax.swing.*; 

public class TestInternalFrame { 

    private static void createAndShowUI() { 
     JDesktopPane pane = new JDesktopPane() { 
      @Override 
      public Dimension getPreferredSize() { 
       return new Dimension(300, 200); 
      } 
     }; 
     pane.setBackground(Color.WHITE); 

     addFrame(pane, new Point(50, 20), "Window1"); 
     addFrame(pane, new Point(60, 30), "Window2"); 
     addIcon(pane, new Point(5, 5), "Action", 
       UIManager.getIcon("OptionPane.informationIcon")); 

     JFrame frame = new JFrame("Desktop"); 
     frame.add(pane); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.pack(); 
     frame.setLocationByPlatform(true); 
     frame.setVisible(true); 
    } 

    private static void addFrame(JDesktopPane pane, Point p, String title) { 
     JInternalFrame frame = new JInternalFrame(title); 
     frame.setSize(200, 100); 
     frame.setLocation(p); 
     frame.setResizable(true); 
     frame.setMaximizable(true); 
     frame.setIconifiable(true); 
     frame.setClosable(true); 
     frame.setVisible(true); 
     pane.add(frame); 
    } 

    private static void addIcon(JDesktopPane pane, Point p, String text, Icon icon) { 
     JButton button = new JButton(text, icon); 
     button.setVerticalTextPosition(SwingConstants.BOTTOM); 
     button.setHorizontalTextPosition(SwingConstants.CENTER); 
     button.setBounds(new Rectangle(p, button.getPreferredSize())); 
     pane.add(button); 
    } 

    public static void main(String[] args) { 
     java.awt.EventQueue.invokeLater(new Runnable() { 
      public void run() { 
       try { 
        UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 
        createAndShowUI(); 
       } catch (Exception e) { 
        e.printStackTrace(); 
       } 
      } 
     }); 
    } 
}