2014-05-09 5 views
0

배경 이미지가있는 JFrame, 배경 이미지의 가운데와 아래쪽을 JLabel로 만들고, 왼쪽과 오른쪽에 "Stay"및 "Leave"라는 두 개의 단추가있는 JFrame을 만들려고합니다. 이미 생성되었습니다. 문제는 각 항목의 순서와 함께 발생합니다. 배경 이미지 위에 텍스트와 버튼이있는 JLabel을 가져올 수 없습니다. 둘 다 표시됩니다. 여기 내 코드가있다. 어떤 조언을 주시면 감사하겠습니다. 미리 감사드립니다.ZOrderComponent에 버튼과 JPanels를 추가하는 방법은 무엇입니까?

public class SceneOne { 

    public static void main(String[] args) throws IOException { 
     // TODO Auto-generated method stub 
     JFrame SceneOne = new JFrame(); 

     ImageIcon image = new ImageIcon(
       "C:/Users/alan/Downloads/scary_forest_2.jpg"); 
     JLabel imageLabel = new JLabel("", image, JLabel.CENTER); 
     JPanel panel = new JPanel(new BorderLayout()); 
     panel.add(imageLabel, BorderLayout.CENTER); 
     SceneOne.add(panel); 
     SceneOne.setResizable(true); 
     imageLabel.setVisible(true); 
     SceneOne.pack(); 

     JButton Leave=new JButton("Leave"); 
     JButton Stay= new JButton ("Stay"); 
     JPanel Leave1= new JPanel(new FlowLayout()); 
     JPanel Stay1=new JPanel(new FlowLayout()); 
     FlowLayout two = new FlowLayout(FlowLayout.LEFT); 
     FlowLayout three = new FlowLayout(FlowLayout.RIGHT); 
     Leave1.setLayout(two); 
     Stay1.setLayout(three); 
     Stay1.add(Leave); 
     Leave1.add(Stay); 
     Leave1.setOpaque(false); 
     Stay1.setOpaque(false); 
     SceneOne.add(Leave1); 
     SceneOne.add(Stay1); 


     JLabel label1 = new JLabel("Test"); 
     SceneOne.add(label1); 

     label1.setText("<html><font color='red'> It was approximately 11:30 pm. The night sky was black not a single star piercing through the darkness" 
       + "except the thick and powerful moonlight." 
       + "<br>" 
       + "You are alone leaving a costume party at a friend's place." 
       + "It was rather boring and you decided to leave early." 
       + "A stutter is heard and your" 
       + "<br>" 
       + "car begins to shake" 
       + "Your headlights and car lights crack. The engine is left dead silent." 
       + "You are left in a total silence" 
       + "and baked in merely the moonlight." 
       + "<br>" 
       + "There is a mere second of silence till a harsh chill ripes through the" 
       + "car like a bullet through paper. You are left dumbfounded. What do you do?</font><html>"); 
     label1.setHorizontalAlignment(JLabel.CENTER); 
     label1.setVerticalAlignment(JLabel.BOTTOM); 
     label1.setVisible(true); 
     label1.setOpaque(false); 



     SceneOne.setComponentZOrder(panel, 0); 
     SceneOne.setComponentZOrder(label1, 0); 
    // SceneOne.setComponentZOrder(Leave1,0); 
     // SceneOne.setComponentZOrder(Stay1,0); 



     SceneOne.setSize(400,320); 
     SceneOne.setTitle("The Car"); 
     SceneOne.setVisible(true); 
     SceneOne.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     SceneOne.setLocation(500, 300); 
    } 

} 

답변

0

우선 Java 명명 규칙을 따르십시오. 변수 이름은 대문자로 시작하면 안됩니다. 내가 사용하는 것처럼 변수 이름을 사용하는 튜토리얼, 텍스트 북 또는 포럼 예제를 본 적이 없습니다. 자신의 컨벤션을 만들지 마라!

JFrame의 기본 레이아웃 관리자는 BorderLayout입니다. frame.add (...) 메서드를 사용하면 구성 요소가 기본적으로 BorderLayout의 CENTER에 추가됩니다. CENTER에만 구성 요소를 추가 할 수 있으므로 마지막 구성 요소 만 표시됩니다.

구성 요소를 이미지 위에 표시하려면 구성 요소를 이미지에 추가해야합니다. 기본 코드는 다음과 같습니다.

JLabel label = new JLabel(new ImageIcon(...)); 
frame.add(label); 

label.setLayout(....); 
label.add(leaveButton); 
label.add(labelWithText); 
label.add(stayButton); 

원하는 정확한 레이아웃을 만들 수 있습니다.

+0

1. 죄송합니다. 이제 마무리 및 이해가 최우선 과제였습니다. 나는 이제 막 명명 규칙을 배우고 깨닫기 시작했습니다 .2. 예를 들어 주셔서 감사 드리며 나는 이것을 upvote 하겠지만 아직 나는 필요한 평판을 얻지 못하고 있습니다. – user3092008

관련 문제