Java小程序JPanel中的项目对齐

Java小程序JPanel中的项目对齐,java,swing,jpanel,layout-manager,grouplayout,Java,Swing,Jpanel,Layout Manager,Grouplayout,我试图让右上角的正方形与下面两个正方形的宽度相同,我想让下面的JTextArea也与宽度匹配。有什么想法吗 看起来不管我把尺寸设置成什么,它都在做它想做的事情。例如,输出JTextArea被设置为仅一列。顶部图像为(700x250),两个半图像为(350x250) 事实证明,无法将相同大小的图像添加到堆栈中。我没有将所有项目都放在“outputPanel”中,而是将每个项目都放在自己的面板中,并将所有面板添加到outputPanel中。真蠢 public class MyApplet exten

我试图让右上角的正方形与下面两个正方形的宽度相同,我想让下面的JTextArea也与宽度匹配。有什么想法吗

看起来不管我把尺寸设置成什么,它都在做它想做的事情。例如,输出JTextArea被设置为仅一列。顶部图像为(700x250),两个半图像为(350x250)


事实证明,无法将相同大小的图像添加到堆栈中。我没有将所有项目都放在“outputPanel”中,而是将每个项目都放在自己的面板中,并将所有面板添加到outputPanel中。真蠢

public class MyApplet extends Applet{
    private static final long serialVersionUID = 1L;
    private JTextArea input_data;
    private JTextArea input_jmax;
    private JTextArea input_gibbs;
    private JTextArea input_burnin;
    private JTextArea output_text;
    private JLabel output_graph;
    private JLabel output_burn1;
    private JLabel output_burn2;
    private static Graphics g=null;

    public void init () {
        //INPUT
        this.input_data = new JTextArea("Data", 30, 30);
        JScrollPane data_pane= new JScrollPane(input_data);
        this.input_jmax = new JTextArea("Polya-Tree Levels", 1, 30);
        this.input_gibbs = new JTextArea("Gibbs Iterates", 1, 30);
        this.input_burnin = new JTextArea("Burn-in", 1, 30);


        //OUTPUT
        Dimension D;
        Image start;

        this.output_burn1 = new JLabel();
        D = new Dimension(345,200);
        start = createImage((int) D.getWidth(), (int) D.getHeight());
        g = start.getGraphics();
        g.setColor(Color.WHITE);
        g.fillRect(0,0,345,200);
        output_burn1.setIcon(new ImageIcon(start));

        this.output_burn2 = new JLabel();
        D = new Dimension(345, 200);
        start = createImage((int) D.getWidth(), (int) D.getHeight());
        g = start.getGraphics();
        g.setColor(Color.WHITE);
        g.fillRect(0,0,345,200);
        output_burn2.setIcon(new ImageIcon(start));

        this.output_graph = new JLabel();
        D = new Dimension(700, 200);
        start = createImage((int) D.getWidth(), (int) D.getHeight());
        g = start.getGraphics();
        g.setColor(Color.WHITE);
        g.fillRect(0,0,700,200);
        output_graph.setIcon(new ImageIcon(start));

        //BUTTON
        JButton b = new JButton("Process Data");

        //set size
        setSize(1200, 600);
        setBackground(Color.lightGray);

        //Create Input Side
        JPanel buttonPanel = new JPanel();
        buttonPanel.setBackground(Color.LIGHT_GRAY);
        buttonPanel.add(b);
        JPanel inputPanel = new JPanel();
        inputPanel.setLayout(new BoxLayout(inputPanel, BoxLayout.Y_AXIS));
        inputPanel.setBackground(Color.LIGHT_GRAY);
        inputPanel.add(data_pane);
        inputPanel.add(Box.createVerticalStrut(10));
        inputPanel.add(input_jmax);
        inputPanel.add(Box.createVerticalStrut(10));
        inputPanel.add(input_gibbs);
        inputPanel.add(Box.createVerticalStrut(10));
        inputPanel.add(input_burnin);
        inputPanel.add(Box.createVerticalStrut(10));
        inputPanel.add(buttonPanel);

        //Create Output Side
        JPanel estPanel = new JPanel();
        estPanel.setBackground(Color.LIGHT_GRAY);
        estPanel.add(output_graph);

        JPanel burninPanel = new JPanel();
        burninPanel.setBackground(Color.LIGHT_GRAY);
        burninPanel.setLayout(new BoxLayout(burninPanel, BoxLayout.X_AXIS));
        burninPanel.add(output_burn1);
        burninPanel.add(Box.createHorizontalStrut(10));
        burninPanel.add(output_burn2);

        this.output_text = new JTextArea("",15,1);
        this.output_text.setEditable(false);
        JScrollPane output_pane= new JScrollPane(output_text);

        JPanel outputPanel = new JPanel();
        outputPanel.setBackground(Color.lightGray);
        outputPanel.setLayout(new BoxLayout(outputPanel, BoxLayout.Y_AXIS));
        outputPanel.add(estPanel);
        outputPanel.add(Box.createVerticalStrut(10));
        outputPanel.add(burninPanel);
        outputPanel.add(Box.createVerticalStrut(10));
        outputPanel.add(output_pane);


        this.setVisible(true); 
        GroupLayout layout = new GroupLayout(this);
        layout.setAutoCreateGaps(true);
        layout.setAutoCreateContainerGaps(true);
        layout.setHorizontalGroup(layout.createSequentialGroup()
                .addGroup(layout.createSequentialGroup()
                        .addComponent(inputPanel)
                        .addComponent(outputPanel)
                        ) 
                );
        layout.setVerticalGroup(layout.createSequentialGroup()
                .addGroup(layout.createParallelGroup(LEADING)
                        .addComponent(inputPanel)
                        .addComponent(outputPanel)
                        )
                );
        this.setLayout(layout);        
        this.setVisible(true);

        // specify that action events sent by the
        // button or the input TextField should be handled 
        // by the same CapitalizerAction object
        Multiplicity ca = new Multiplicity(input_data, input_jmax, input_gibbs, input_burnin, output_text,output_graph,output_burn1,output_burn2);
        b.addActionListener(ca);
    }
}

创建一个自定义面板,可以在其上绘制图形。使用适当的布局管理器将其添加到小程序中。你可能会考虑在二十一世纪去我们其余的人,至少考虑使用秋千在AWT上,哦,等等,你正在混合AWT和Swing组件……这将很好地结束……知道,AWT和Swing组件之间有区别,AWT组件不能很好地在摆动组件上播放,最好避免混合它们;这样更好吗?您知道如何使用组布局获取第二列吗?困难的是网格的大小不一样。。。我是不是在找对树了@MadProgrammerYou 3个核心区域,左、中、右。按自己的方式布置每个区域
JPanel
。一旦你有了它,你就可以使用
GridLayout
gridbagloayout
将这三个面板添加到主界面上了!我们在组布局中启动并运行swing元素。我仍然有相同的对齐问题,只是现在文本区域之间也没有填充@MadProgrammer
setSize(1200600)
了解小程序的第一件事是在加载它们的HTML中设置它们的大小。小程序不应试图设置它们在网页中占用的空间大小。再说一次,不要把秋千和AWT混在一起。如果“模板”是基于AWT的(
java.applet.applet
),最好始终坚持使用AWT组件。感谢您的输入-我实际上有一个更为算法/数学复合sci的本科学位。我们没有接触过小程序,虽然已经6年左右了,但我想我会努力实现这一飞跃。我只是设置了大小,以便在我将其发布到互联网之前,它会在调试器中弹出。
public class MyApplet extends Applet{
    private static final long serialVersionUID = 1L;
    private JTextArea input_data;
    private JTextArea input_jmax;
    private JTextArea input_gibbs;
    private JTextArea input_burnin;
    private JTextArea output_text;
    private JLabel output_graph;
    private JLabel output_burn1;
    private JLabel output_burn2;
    private static Graphics g=null;

    public void init () {
        //INPUT
        this.input_data = new JTextArea("Data", 30, 30);
        JScrollPane data_pane= new JScrollPane(input_data);
        this.input_jmax = new JTextArea("Polya-Tree Levels", 1, 30);
        this.input_gibbs = new JTextArea("Gibbs Iterates", 1, 30);
        this.input_burnin = new JTextArea("Burn-in", 1, 30);


        //OUTPUT
        Dimension D;
        Image start;

        this.output_burn1 = new JLabel();
        D = new Dimension(345,200);
        start = createImage((int) D.getWidth(), (int) D.getHeight());
        g = start.getGraphics();
        g.setColor(Color.WHITE);
        g.fillRect(0,0,345,200);
        output_burn1.setIcon(new ImageIcon(start));

        this.output_burn2 = new JLabel();
        D = new Dimension(345, 200);
        start = createImage((int) D.getWidth(), (int) D.getHeight());
        g = start.getGraphics();
        g.setColor(Color.WHITE);
        g.fillRect(0,0,345,200);
        output_burn2.setIcon(new ImageIcon(start));

        this.output_graph = new JLabel();
        D = new Dimension(700, 200);
        start = createImage((int) D.getWidth(), (int) D.getHeight());
        g = start.getGraphics();
        g.setColor(Color.WHITE);
        g.fillRect(0,0,700,200);
        output_graph.setIcon(new ImageIcon(start));

        //BUTTON
        JButton b = new JButton("Process Data");

        //set size
        setSize(1200, 600);
        setBackground(Color.lightGray);

        //Create Input Side
        JPanel buttonPanel = new JPanel();
        buttonPanel.setBackground(Color.LIGHT_GRAY);
        buttonPanel.add(b);
        JPanel inputPanel = new JPanel();
        inputPanel.setLayout(new BoxLayout(inputPanel, BoxLayout.Y_AXIS));
        inputPanel.setBackground(Color.LIGHT_GRAY);
        inputPanel.add(data_pane);
        inputPanel.add(Box.createVerticalStrut(10));
        inputPanel.add(input_jmax);
        inputPanel.add(Box.createVerticalStrut(10));
        inputPanel.add(input_gibbs);
        inputPanel.add(Box.createVerticalStrut(10));
        inputPanel.add(input_burnin);
        inputPanel.add(Box.createVerticalStrut(10));
        inputPanel.add(buttonPanel);

        //Create Output Side
        JPanel estPanel = new JPanel();
        estPanel.setBackground(Color.LIGHT_GRAY);
        estPanel.add(output_graph);

        JPanel burninPanel = new JPanel();
        burninPanel.setBackground(Color.LIGHT_GRAY);
        burninPanel.setLayout(new BoxLayout(burninPanel, BoxLayout.X_AXIS));
        burninPanel.add(output_burn1);
        burninPanel.add(Box.createHorizontalStrut(10));
        burninPanel.add(output_burn2);

        this.output_text = new JTextArea("",15,1);
        this.output_text.setEditable(false);
        JScrollPane output_pane= new JScrollPane(output_text);

        JPanel outputPanel = new JPanel();
        outputPanel.setBackground(Color.lightGray);
        outputPanel.setLayout(new BoxLayout(outputPanel, BoxLayout.Y_AXIS));
        outputPanel.add(estPanel);
        outputPanel.add(Box.createVerticalStrut(10));
        outputPanel.add(burninPanel);
        outputPanel.add(Box.createVerticalStrut(10));
        outputPanel.add(output_pane);


        this.setVisible(true); 
        GroupLayout layout = new GroupLayout(this);
        layout.setAutoCreateGaps(true);
        layout.setAutoCreateContainerGaps(true);
        layout.setHorizontalGroup(layout.createSequentialGroup()
                .addGroup(layout.createSequentialGroup()
                        .addComponent(inputPanel)
                        .addComponent(outputPanel)
                        ) 
                );
        layout.setVerticalGroup(layout.createSequentialGroup()
                .addGroup(layout.createParallelGroup(LEADING)
                        .addComponent(inputPanel)
                        .addComponent(outputPanel)
                        )
                );
        this.setLayout(layout);        
        this.setVisible(true);

        // specify that action events sent by the
        // button or the input TextField should be handled 
        // by the same CapitalizerAction object
        Multiplicity ca = new Multiplicity(input_data, input_jmax, input_gibbs, input_burnin, output_text,output_graph,output_burn1,output_burn2);
        b.addActionListener(ca);
    }
}