2016-12-05 17 views
0

JLabel에 대한 경계를 설정하는 방법과 관계없이 항상 동일한 지점에 있습니다. Window Builder Swing Designer 응용 프로그램 창을 사용하고 있습니다.JPanel의 JLabel 구성 요소를 JPanel의 왼쪽에 맞출 수 없습니다.

import java.awt.EventQueue; 

import javax.swing.JFrame; 
import javax.swing.JPanel; 
import javax.swing.border.LineBorder; 
import java.awt.Color; 
import javax.swing.JLabel; 
import java.awt.Font; 
import javax.swing.SwingConstants; 

public class Restaurants { 

private JFrame frame; 

/** 
* Launch the application. 
*/ 
public static void main(String[] args) { 
    EventQueue.invokeLater(new Runnable() { 
     public void run() { 
      try { 
       Restaurants window = new Restaurants(); 
       window.frame.setVisible(true); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
     } 
    }); 
} 

/** 
* Create the application. 
*/ 
    public Restaurants() { 
    initialize(); 
} 

/** 
* Initialize the contents of the frame. 
*/ 
private void initialize() { 
    frame = new JFrame(); 
    frame.setBounds(0, 0, 1368, 689); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.getContentPane().setLayout(null); 

    JPanel panel = new JPanel(); 
    panel.setBorder(new LineBorder(new Color(0, 0, 0), 12)); 
    panel.setBounds(10, 143, 572, 258); 
    frame.getContentPane().add(panel); 

    JLabel label= new JLabel("Chicken Burger Meal"); 
    label.setFont(new Font("Tahoma", Font.PLAIN, 18)); 
    label.setBounds(21,70,173,29); 
    panel.add(label); 

    JLabel lblChickenBurger = new JLabel("Chicken Burger"); 
    lblChickenBurger.setFont(new Font("Tahoma", Font.PLAIN, 18)); 
    lblChickenBurger.setBounds(21,22,173,29); 
    panel.add(lblChickenBurger); 

    JPanel panel_1 = new JPanel(); 
    panel_1.setBorder(new LineBorder(new Color(0, 0, 0), 12)); 
    panel_1.setBounds(592, 143, 401, 259); 
    frame.getContentPane().add(panel_1); 

    JPanel panel_2=new JPanel(); 
    panel_2.setBorder(new LineBorder(new Color(0,0,0), 12)); 
    panel_2.setBounds(10,412,572,228); 
    frame.getContentPane().add(panel_2); 

    JPanel panel_3=new JPanel(); 
    panel_3.setBorder(new LineBorder(new Color(0,0,0),12)); 
    panel_3.setBounds(592,411,401,228); 
    frame.getContentPane().add(panel_3); 

    JPanel panel_4 = new JPanel(); 
    panel_4.setBorder(new LineBorder(new Color(0, 0, 0), 12)); 
    panel_4.setBounds(1003, 174, 401, 465); 
    frame.getContentPane().add(panel_4); 

    JLabel lblNewLabel = new JLabel("Loan Management System"); 
    lblNewLabel.setFont(new Font("Tahoma", Font.BOLD, 60)); 
    lblNewLabel.setBounds(160, 49, 849, 96); 
    frame.getContentPane().add(lblNewLabel); 
} 

}

당신이 잘못에 대해 어떻게 생각하십니까 : 여기 내 코드는? 내가 생각할 수있는 가능한 모든 전략을 분류했지만 전략 중 어느 것도 모든 유형의 실행 가능한 솔루션을 산출하는 것 같지 않습니다.

답변

0

setBounds() 메서드에 전달 된 인수를 변경하면 코드가 제대로 작동하는 것 같습니다. 특히 JPanel을 이동하려고하십니까?

난 당신이 뭘 하려는지에 대한 GridLayout과 레이아웃 매니저보고하려고합니다 : https://docs.oracle.com/javase/tutorial/uiswing/layout/grid.html

0

가장 쉽고 가장 적절한 방법은 절대 위치를 사용하지하는 것입니다 - 적절한 레이아웃 매니저 (들)를 사용합니다. 절대 위치 지정을 사용하려고하면 특히 화면 크기가 다른 플랫폼이나 픽셀 크기 또는 기본 글꼴 또는 기타 수십 가지 다른 플랫폼에 이식하는 경우 문제가 발생할 수 있습니다. 글꼴 또는 레이블 문자열을 변경하거나 구성 요소를 추가/제거하는 것은 악몽입니다.

JPanel itsepf는 (x, y)의 구성 요소 크기에 아무런주의를 기울이지 않습니다. 레이아웃 관리자가이를 수행해야합니다.

null 레이아웃을 사용하는 경우 null null 레이아웃 관리자를 사용하여 고유 한 JPanel 서브 클래스를 만들고 paintComponent() 메서드에서 구성 요소를 직접 배치해야합니다 (또는 레이아웃 관리자를 직접 작성하여 이 작업을 수행).