2017-03-18 1 views
0

그래서 저는 자바 프로그램에서 작업하고 있습니다. 저는 JLabel을 창 중앙에 놓으려고 노력하고 있습니다. 그러나 레이블을 맨 위 중심에만있는 것은 무엇입니까. 누군가가 창 가운데에 텍스트를 배치하는 방법을 찾도록 도울 수 있기를 바랍니다. 여기 내 코드는 다음과 같습니다.JLabel not Centering

import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 

import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 
import javax.swing.JTextField; 
import javax.swing.SwingConstants; 
import javax.swing.SwingUtilities; 

public class Lottery extends JPanel implements ActionListener { 


    private static final long serialVersionUID = 5815877011755522230L; 

    private JLabel label; 

    public static void main(String[] args) {  
     make(); 

    } 

    public Lottery() { 

     label = new JLabel("Hello There"); 
     label.setHorizontalAlignment(JLabel.CENTER); 
     label.setVerticalAlignment(JLabel.CENTER); 
     add(label); 

    } 

    public static void make(){ 
     JFrame frame = new JFrame("Lottery"); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

     Lottery hi = new Lottery(); 
     frame.setContentPane(hi); 

     frame.setSize(600, 600); 
     frame.setVisible(true); 

    } 


} 

이 문제를 해결할 수있는 사람이 있습니까?

+0

당신은 라벨의 수직/수평 정렬을 변경하거나 대신 BorderLayout를 – MadProgrammer

답변

2

대체 add (레이블); 로 :

setLayout(new BorderLayout()); 
add(label, BorderLayout.CENTER); 

및 java.awt.BorderLayout의를 가져 잊지 마세요;

코드는 레이블 내에 텍스트를 정렬하지만 레이블 자체는 패널 중앙에 배치되지 않습니다. 그리고 어쨌든 레이아웃을 고민해야합니다.

import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 

import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 
import javax.swing.JTextField; 
import javax.swing.SwingConstants; 
import javax.swing.SwingUtilities; 

import java.awt.BorderLayout; 

public class Lottery extends JPanel { 


    private static final long serialVersionUID = 5815877011755522230L; 

    private JLabel label; 

    public static void main(String[] args) { 
     make(); 

    } 

    public Lottery() { 

     label = new JLabel("Hello There"); 
     label.setHorizontalAlignment(JLabel.CENTER); 
     label.setVerticalAlignment(JLabel.CENTER); 
     //add(label); 
     setLayout(new BorderLayout()); 
     add(label, BorderLayout.CENTER); 

    } 

    public static void make(){ 
     JFrame frame = new JFrame("Lottery"); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

     Lottery hi = new Lottery(); 
     frame.setContentPane(hi); 

     frame.setSize(600, 600); 
     frame.setVisible(true); 

    } 


} 

스크린 샷 : https://postimg.org/image/67vjv79jh/

+0

감사의 GridBagLayout에를 사용하려고 노력하지만, 텍스트가 아직 완벽하게 중앙에 있지, 그래서 당신이 말해 줄 수 있었다 정렬을 미세 조정하기 위해 치수와 같은 것을 어떻게 사용할 수 있습니까? – coolio

+0

글을 올리기 전에 테스트를 해본 결과, 이전에 스크린 샷을 추가 한 것처럼 보이지만, 눈금자로 확인하지 않았고 픽셀을 계산하지 않았으므로 완벽하지 않을 수도 있습니다. :) 그러나, 제 제안은 MigLayout을 사용하는 것입니다. 이 도구는 꽤 복잡하지만 강력하고 유연합니다. 그것을 사용하는 법을 배워야하지만 결과는 그만한 가치가 있습니다. 상업적으로 독점적 인 프로젝트에서도 사용할 수있는 BSD 라이센스에 따라 라이센스가 부여됩니다. –