2017-03-18 8 views
0

私は、JLabelをウィンドウの中央に配置しようとしているJavaプログラムに取り組んできましたが、これまでラベルはトップセンターにしかありません。私は誰かが窓の中央にテキストを中心に置く方法を見つけるのを助けることを望んでいる。ここに私のコードです: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

あなたはラベルの垂直/水平方向の配置を変更したり、GridBagLayoutのかわりにBorderLayoutの – MadProgrammer

答えて

2

を置き換えます。add(label); with:

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

感謝を使用してみますが、テキストは、まだ完全に中央されていないので、あなたが私に言うことができる可能性がどのように整列を微調整するために次元のようなものを使用することができますか? – coolio

+0

さて、私は投稿する前にテストしましたが、それはかなり私の中心になりました(以前の回答のスクリーンショットを追加しました)。しかし、私はルーラーで検証せずピクセル数もカウントしなかったので、 :)しかし、私の提案は、MigLayoutを使用することです。このツールは非常に複雑ですが、強力で柔軟性があります。あなたはそれを使う方法を学ばなければならないでしょうが、結果は努力する価値があります。これはBSDライセンスの下でライセンスされているため、商用のプロジェクトリープロジェクトでも使用できます。 –