2011-05-01 4 views
0

안녕하세요 레이아웃에 대해 읽었지만 내 응용 프로그램에 사용할 레이아웃을 얻지 못했습니다. 이미지를 JPanel에 추가하고 JLabel을 제목 표시 줄 바로 아래 오른쪽 구석에 배치하려고합니다.제목 표시 줄 바로 아래 오른쪽 상단 모서리에 JLabel을 배치하는 방법은 무엇입니까?

코드를 작성했지만 작동하지 않습니다. 센터에 JLabel이 표시됩니다.

내 코드는 내가 setBound에 의해 요구되는 위치 설정 한 위의 코드에서

// Below line adds image to Jpanel 
panel = new ImagePanel(backgroundImage); 
// I want to add below label to Jpanel 
JLabel jdesignNo=new JLabel(designNo); 
jdesignNo.setFont((new java.awt.Font("Times New Roman", 1, 30))); 
jdesignNo.setBounds(900, 100, 50, 30); 
jdesignNo.setBackground(Color.GREEN); 
panel.add(jdesignNo); 
frame.getContentPane().add(panel); 
frame.setVisible(true); 

이지만 작동하지 않습니다.

이 문제를 해결하는 방법은 무엇입니까?

감사합니다 !!!

답변

1

는 구성 요소를 직접 배치하고자하는 경우

panel.setLayout(null); 

이 있는지 확인합니다.

그러나 사용자의 요구에 맞는 레이아웃 관리자를 확인하고 사용하면 응용 프로그램의 복잡성이 커질수록 쉽게 작업 할 수 있습니다.

+0

일을 레이아웃을 옹호합니다. – trashgod

+0

-1 널 레이아웃을 전혀 도입하지 않음 ;-) – kleopatra

+0

: null 레이아웃을 설정 한 후 .. setbound가 작동하기 시작했습니다. 지금은 나의 필요에 따라 그것의 보여주는 위치. –

4

레이아웃 (이미지)에서 중요한 기능을 가지고 있기 때문에 BorderLayout을 기본 레이아웃으로 사용하고 싶을 것입니다. JLabel의이

지금 BorderLayout.NORTH에 가고 싶어 옆에

frame.getContentPane().setLayout(new BorderLayout(4, 4)); 

는 당신이 그렇게한다면, 그것은 멀리에 가지 않을 것이라고 BorderLayout.CENTER에

을 이미지를 추가 그렇다면 북쪽에 JPanel을 만들고 패널에 JLabel을 추가하고 북쪽에 패널을 배치하십시오.

이제 북쪽 패널에 대한 레이아웃이 필요합니다. BoxLayout에서는 내가 setBound에 의해 요구되는 위치 설정 한 위의 코드에서

northPanel.add(Box.createHorizontalGlue()); 
northPanel.add(label); 
+1

BorderLayout는 최상위 컨테이너의 기본 레이아웃입니다. – camickr

+0

또한 "제거"및 "setLayout"이 필요에 따라 'contentPane'으로 전달되도록 재정의되었습니다. "- [내용 창에 구성 요소 추가] (http://download.oracle.com/javase/tutorial/ uiswing/components/toplevel.html # contentpane). – trashgod

8

을 작동하지만 작동하지 않습니다.

그렇게 할 필요가 없습니다. setBounds (...)를 사용해서는 안됩니다. 레이아웃 매니저를 사용

JLabel label = new JLabel("Some Text"); 
label.setHorizontalAlignment(JLabel.RIGHT); 
frame.add(label, BorderLayout.NORTH); 
+0

굉장 :) 그게 날 도왔 : D 조 –

1

가능성을 GridBagLayout로 함께 :

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

public class MyPanel extends JPanel { 

    public MyPanel() { 
     setLayout(new GridBagLayout()); 
     add(new JLabel("TOP RIGHT"), new GridBagConstraints(
       0, // gridx 
       0, // gridy 
       1, // gridwidth 
       1, // gridheight 
       1, // weightx 
       1, // weighty 
       GridBagConstraints.NORTHEAST, // anchor <------------ 
       GridBagConstraints.NONE, // fill 
       new Insets(0, // inset top 
       0, // inset left 
       0, // inset bottom 
       0), // inset right 
       0, // ipadx 
       0)); // ipady 
    } 

    public static void main(String[] args) { 
     JFrame frame = new JFrame(); 
     frame.setResizable(true); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.getContentPane().add(new MyPanel()); 
     frame.setSize(400, 400); 
     frame.setLocationRelativeTo(null); 
     frame.setVisible(true); 
    } 
} 

니콜라스

관련 문제