2

2 つのコンポーネントを 1 行に配置できるようにする必要があります。これを他のいくつかのラベルとテキスト フィールドで数回繰り返しますが、すべてをきれいに重ね合わせる必要があります。以下に私のコードを掲載します。

package madLibs;

import java.awt.BorderLayout;
import java.awt.Color;

import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class MadLibsGUI {

    public static void main(String[] args) {
        MadLibsGUI main = new MadLibsGUI();
        main.start();
    }

    public void start() {
        JFrame frame = new JFrame();
        JPanel panel = new JPanel();
        JButton madLibButton = new JButton("Lib it!");

        JLabel title = new JLabel("Welcome to mad libs! \n Put in your words and press the 'Lib It' button to play!");
        JLabel nameLabel = new JLabel("Name: ");
        JLabel verbLabel1 = new JLabel("Verb: ");
        JLabel adjLabel = new JLabel("Adjective: ");
        JLabel verbLabel2 = new JLabel("Verb: ");
        JLabel nounLabel = new JLabel("Noun: ");

        JTextField nameTxt = new JTextField(20);
        JTextField verbTxt1 = new JTextField(20);
        JTextField adjTxt = new JTextField(20);
        JTextField verbTxt2 = new JTextField(20);
        JTextField nounTxt = new JTextField(20);

        frame.getContentPane().add(BorderLayout.SOUTH, madLibButton);
        frame.getContentPane().add(BorderLayout.NORTH, title);

        panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
        panel.setBackground(Color.green);
        frame.getContentPane().add(panel);

        panel.add(nameLabel, nameTxt);
        panel.add(verbLabel1);
        panel.add(verbTxt1);
        panel.add(adjLabel);
        panel.add(adjTxt);
        panel.add(verbLabel2);
        panel.add(verbTxt2);
        panel.add(nounLabel);
        panel.add(nounTxt);

        frame.setSize(500, 500);
        frame.setVisible(true);
    }
}
4

2 に答える 2

5

を使用してそれを行う1つの方法を次に示しますGridBagLayout

これを解決する方法は他にもたくさんあります。

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

import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;

public class MadLibsGUI {

    public void start() {
        JFrame frame = new JFrame();
        JPanel panel = new JPanel();
        JButton madLibButton = new JButton("Lib it!");

        JLabel title = new JLabel("Welcome to mad libs! \n Put in your words and press the 'Lib It' button to play!");
        JLabel nameLabel = new JLabel("Name: ");
        JLabel verbLabel1 = new JLabel("Verb: ");
        JLabel adjLabel = new JLabel("Adjective: ");
        JLabel verbLabel2 = new JLabel("Verb: ");
        JLabel nounLabel = new JLabel("Noun: ");

        JTextField nameTxt = new JTextField(20);
        JTextField verbTxt1 = new JTextField(20);
        JTextField adjTxt = new JTextField(20);
        JTextField verbTxt2 = new JTextField(20);
        JTextField nounTxt = new JTextField(20);

        frame.getContentPane().add(BorderLayout.SOUTH, madLibButton);
        frame.getContentPane().add(BorderLayout.NORTH, title);

        panel.setLayout(new GridBagLayout());
        panel.setBackground(Color.green);
        frame.getContentPane().add(panel);
        GridBagConstraints left = new GridBagConstraints();
        left.anchor = GridBagConstraints.EAST;
        GridBagConstraints right = new GridBagConstraints();
        right.weightx = 2.0;
        right.fill = GridBagConstraints.HORIZONTAL;
        right.gridwidth = GridBagConstraints.REMAINDER;
        panel.add(nameLabel, left);
        panel.add(nameTxt, right);
        panel.add(verbLabel1, left);
        panel.add(verbTxt1, right);
        panel.add(adjLabel, left);
        panel.add(adjTxt, right);
        panel.add(verbLabel2, left);
        panel.add(verbTxt2, right);
        panel.add(nounLabel, left);
        panel.add(nounTxt, right);
        panel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
        frame.pack();
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                MadLibsGUI main = new MadLibsGUI();
                main.start();
            }
        });
    }

}

そして結果:

結果

于 2013-04-15T11:02:16.900 に答える
0

GridBagLayout を使用した別の簡単な例。

2 つのコンポーネントを並べて配置する必要があります。BorderLayout を使用すると、各コンポーネントは、コンポーネント内に 1 つの領域 (NORTH、SOUTH、EAST、WEST など) のみを持つことができます。

これは GridBagLayout を使用することで修正されます

        JPanel panel1 = new JPanel(new GridBagLayout());

        JPanel content1 = new JPanel(new GridLayout(0, 1));
        Border border = BorderFactory.createTitledBorder("Workflow Files");
        content1.setBorder(border);
        ButtonGroup group = new ButtonGroup();
        JRadioButton aRadioButton = new JRadioButton("4 slices");
        content1.add(aRadioButton);
        group.add(aRadioButton);
        aRadioButton = new JRadioButton("8 slices", true);
        content1.add(aRadioButton);
        group.add(aRadioButton);
        aRadioButton = new JRadioButton("12 slices");
        content1.add(aRadioButton);
        group.add(aRadioButton);
        aRadioButton = new JRadioButton("16 slices");
        content1.add(aRadioButton);
        group.add(aRadioButton);

        GridBagConstraints c = new GridBagConstraints();
        c.fill = GridBagConstraints.HORIZONTAL;
        c.weightx = 0.5;
        c.gridx = 0;
        c.gridy = 0;
        panel1.add(content1, c);


        JPanel content2 = new JPanel(new GridLayout(0,1));
        border = BorderFactory.createTitledBorder("Topology Files");
        content2.setBorder(border);
        JCheckBox aCheckbox = new JCheckBox("Achivoes");
        content2.add(aCheckbox);
        aCheckbox = new JCheckBox("Grass");
        content2.add(aCheckbox);

        c.fill = GridBagConstraints.HORIZONTAL;
        c.weightx = 0.5;
        c.gridx = 1;
        c.gridy = 0;
        panel1.add(content2, c);

ここに画像の説明を入力

于 2014-07-10T05:49:01.447 に答える