0

この GUI には多くの問題があります。左側に panel1、右側に panel2 を持つアプレットを作成します。ここに私の 2 つの問題があります。1) JTextArea はアプレットの右側全体を占有する必要がありますが、それを行うことはできません。2) JTextArea を長くすると、まったく別のパネルにあるにもかかわらず、JTextField も長くなります。どうしたの?アプレットとすべてが別のクラスで作成されます-コンパイルして正常に実行されます。私はちょうどこの部分を機能させることができません。

private JButton button1;

  private JLabel label1;
private JTextField field1;
private JPanel panel1;
private JPanel panel2;
private JPanel panel3;
private JTextArea area1;
int i = 0;
int j = 0;
private JScrollPane pane;


public Class()
{


this.petList = petList;
this.sPanel = sPanel;

panel1 = new JPanel();
panel1.setLayout(new BorderLayout());
button1 = new JButton("Test");
panel1.add(button1,BorderLayout.SOUTH);
field1 = new JTextField();
panel1.add(field1, BorderLayout.EAST);
label1 = new JLabel("Test");
panel1.add(label1, BorderLayout.WEST);

panel2 = new JPanel();
area1 = new JTextArea(10, 20);
panel2.add(area1);

panel3 = new JPanel();
panel3.setLayout(new BorderLayout(5,5));
panel3.add(panel1, BorderLayout.WEST);
panel3.add(panel2, BorderLayout.EAST);

this.add(panel3);
4

1 に答える 1

5

あなたのアイデアは良いものです。複合レイアウトを使用すると、複数のコンポーネントを簡単にレイアウトできますが、レイアウト マネージャーの選択が少し間違っていました。

の性質BorderLayoutは、使用可能なすべてのスペースを使用してコンポーネントをレイアウトすることです。

GridBagLayout代わりに次のようなものを使用してみてください

ここに画像の説明を入力

import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;

public class BadLayout12 {

    public static void main(String[] args) {
        new BadLayout12();
    }

    public BadLayout12() {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                try {
                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
                }

                JFrame frame = new JFrame("Testing");
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.setLayout(new BorderLayout());
                frame.add(new TestPane());
                frame.pack();
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);
            }
        });
    }

    public class TestPane extends JPanel {

        private JButton button1;
        private JLabel label1;
        private JTextField field1;
        private JPanel panel1;
        private JPanel panel2;
        private JPanel panel3;
        private JTextArea area1;
        int i = 0;
        int j = 0;
        private JScrollPane pane;

        public TestPane() {

//            this.petList = petList;
//            this.sPanel = sPanel;

            button1 = new JButton("Test");
            field1 = new JTextField(10);
            label1 = new JLabel("Test");

            panel1 = new JPanel(new GridBagLayout());
            GridBagConstraints gbc = new GridBagConstraints();
            gbc.gridx = 0;
            gbc.gridy = 0;
            panel1.add(label1, gbc);
            gbc.gridx++;
            panel1.add(field1, gbc);
            gbc.gridx = 0;
            gbc.gridy++;
            gbc.gridwidth = 2;
            panel1.add(button1, gbc);

            panel2 = new JPanel();
            area1 = new JTextArea(10, 20);
            panel2.add(new JScrollPane(area1));

            panel3 = new JPanel();
            panel3.setLayout(new BorderLayout(5, 5));
            panel3.add(panel1, BorderLayout.WEST);
            panel3.add(panel2, BorderLayout.EAST);

            this.add(panel3);
        }
    }
}

を見てみましょう;

詳細については

于 2013-02-21T05:03:20.010 に答える