2017-09-04 7 views
0

詳細については説明しませんので、フローレイアウトマネージャを使用することに限定しています。明らかに問題があり、コンポーネントを同じ行に保持する必要があるということは、コンポーネントがパネルの端を超えているため、コンポーネントをフレームの下に押し込むことです。フローレイアウトマネージャを使用してコンポーネントを水平方向に整列させる

ラベルと対応するテキストフィールドが同じ行に表示されるようにコンポーネントを揃える方法はありますか?

答えて

0

私が正しく理解していれば、主な問題は、ラベルと入力が分離されていることです(右側のラベルと、次の行の入力が左側にあります)。

この問題の解決策の1つは、ラベルと入力フィールドをサブパネルにグループ化し、このサブパネルをFlowLayoutを使用するメインパネルに追加することです。

次のコードは、この方法を示します。

import java.awt.FlowLayout; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 
import javax.swing.JTextField; 

/** 
* 
* @author acampos 
*/ 
public class Main02 { 

    public static void main(String[] args) { 
     JFrame jFrame = new JFrame(); 
     JPanel mainPanel = new JPanel(); 

     JPanel dynamicPanel; 
     JLabel dynamicLabel; 
     JTextField dynamicInput; 

     for (int i = 0; i < 5; i++) { 
      // Creates the panel that will contain the Label AND the Input 
      dynamicPanel = new JPanel(); 
      // Creates the dynamic label 
      dynamicLabel = new JLabel("Label " + i + ": "); 
      // Creates the dynamic text field 
      dynamicInput = new JTextField(10); 
      // Adds the label and the text field to the dynamic panel 
      dynamicPanel.add(dynamicLabel); 
      dynamicPanel.add(dynamicInput); 
      dynamicPanel.setSize(100, 100); 
      // Adds the dynamic panel to the main panel <-- HERE IS THE KEY 
      mainPanel.add(dynamicPanel); 
     } 

     // Set the FlowLayout to the MAIN PANEL, so the dynamic panels 
     // will 'flow' but the label and the text field will be kept together 
     mainPanel.setLayout(new FlowLayout(3)); 
     // Adds the main panel (which contains the dynamic panels) to the main frame 

     jFrame.add(mainPanel); 
     jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     jFrame.setVisible(true); 
     jFrame.setSize(600, 150); 
     jFrame.setResizable(true); 
    } 
} 

このコードを実行する(はい、あなたはそれを実行することができます)と、ラベルと入力はもう分割していないことを確認したJFrameのサイズを変更する場合。

注:次の質問では、コードをコミュニティと共有することを強くお勧めします。これは、より詳細な良い練習です。https://stackoverflow.com/help/how-to-ask

関連する問題