2016-12-05 9 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のレイアウトでそれを行う上で主張する場合、あなたはヌルレイアウトマネージャを使用して独自のJPanelのサブクラスを作成する必要があります、とpaintComponent()メソッドの場所にコンポーネントを自分(または代わりに、に独自のLayoutManagerを書きますこれを行う)。

関連する問題