1

Java アプリケーションを開発していますが、いくつかのラベルとテキストフィールドを配置する際に助けが必要です。

これが私のコードです:

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JComboBox;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JTextField; 
import java.awt.BorderLayout;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.FlowLayout;

public class AuctionClient
{
public AuctionClient()
{
    JFrame GUIFrame = new JFrame();
    JPanel GUIPanel = new JPanel();
    JLabel LabelUserName = new JLabel("UserName:");
    JTextField TextFieldUserName = new JTextField("                               ");

    JLabel LabelPassword = new JLabel("Password:");
    JTextField TextFieldPassword = new JTextField("                               ");        

    GUIFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    GUIFrame.setTitle("Auction Client");
    GUIFrame.setSize(500,250);

    GUIFrame.setLocationRelativeTo(null);

    GUIPanel.add(LabelUserName);
    GUIPanel.add(TextFieldUserName);        

    GUIPanel.add(LabelPassword);
    GUIPanel.add(TextFieldPassword);         

    GUIFrame.add(GUIPanel, BorderLayout.NORTH);
    GUIFrame.setVisible(true);
}  
}

上記のコードでは、LabelPassword および TextFieldPassword は、LabelUsername および TextFieldUsername と同じ行にあります。LabelPassword と TextFieldPassword を新しい行に配置するのを手伝ってもらえますか。JFrame上にオブジェクトを配置するためにX、Y座標を指定することは可能ですか?

オブジェクトが現在どのように表示されているかを示す画像を次に示します。

ここに画像の説明を入力

http://canning.co.nz/Java/Positioning_Image.png

4

2 に答える 2

5

コンポーネントを座標で配置しようとしないでください。むしろ、適切なLayoutManager's論理条件と制約を使用して、コンポーネントを配置してください。

を使用した一例を次に示しGridBagLayoutます。

import java.awt.BorderLayout;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;

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

public class AuctionClient {
    public AuctionClient() {
        JFrame guiFrame = new JFrame();
        JPanel guiPanel = new JPanel(new GridBagLayout());
        JLabel userNameLabel = new JLabel("UserName:");
        JTextField userNameTextField = new JTextField(30);

        JLabel passwordLabel = new JLabel("Password:");
        JTextField passwordTextField = new JPasswordField(30);

        guiFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        guiFrame.setTitle("Auction Client");
        guiFrame.setSize(500, 250);

        guiFrame.setLocationRelativeTo(null);
        GridBagConstraints labelGBC = new GridBagConstraints();
        labelGBC.insets = new Insets(3, 3, 3, 3);
        GridBagConstraints fieldGBC = new GridBagConstraints();
        fieldGBC.insets = new Insets(3, 3, 3, 3);
        fieldGBC.gridwidth = GridBagConstraints.REMAINDER;
        guiPanel.add(userNameLabel, labelGBC);
        guiPanel.add(userNameTextField, fieldGBC);

        guiPanel.add(passwordLabel, labelGBC);
        guiPanel.add(passwordTextField, fieldGBC);

        guiFrame.add(guiPanel, BorderLayout.NORTH);
        guiFrame.setVisible(true);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                new AuctionClient();
            }
        });
    }
}
于 2013-05-06T11:30:53.793 に答える
5
  • GridLayout、SpringLayout、GridBagLayoutはデフォルトでそれを行うことができます

  • 最も簡単なのはGridLayout(2, 2, 10, 10)です。

    1. ただし、すべての JComponents はそのコンテナでサイズ変更可能です

    2. JLabel (setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);またはsetHorizontalAlignment(JLabel.RIGHT);)の水平方向の配置を変更する必要があります

    3. 決定 ( JTextField TextFieldUserName = new JTextField(20)) 以下のいずれかの初期寸法LayoutManager

于 2013-05-06T11:23:15.503 に答える