Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在JPanel的顶部和底部安排JComponents_Java_Swing - Fatal编程技术网

Java 如何在JPanel的顶部和底部安排JComponents

Java 如何在JPanel的顶部和底部安排JComponents,java,swing,Java,Swing,我的程序中有三个JButtons,两个JLabels和一个JTextField,还有一个JPanel和FlowLayout。我想在JPanel的开头安排三个按钮,其余按钮安排在JPanel的末尾。我需要在三个按钮和最后三个组件之间留出空间,但代码不起作用。有人能帮我吗 代码如下: JPanel panelMenu=new Jpanel(new FlowLayout()) panelMenu.add ( btnOpen ); panelMenu.add ( lblPage ); panelMenu

我的程序中有三个
JButton
s,两个
JLabel
s和一个
JTextField
,还有一个
JPanel
FlowLayout
。我想在
JPanel
的开头安排三个按钮,其余按钮安排在
JPanel
的末尾。我需要在三个按钮和最后三个组件之间留出空间,但代码不起作用。有人能帮我吗

代码如下:

JPanel panelMenu=new Jpanel(new FlowLayout())
panelMenu.add ( btnOpen );
panelMenu.add ( lblPage );
panelMenu.add ( txtCurrentPage );
panelMenu.add ( lblTotalPage );
panelMenu.add ( btnBackword );
panelMenu.add ( btnNext );
getContentPanel.add(panelMenu);
该类将组件放置在一行中。要得到你想要的,你可以使用

示例代码:

import java.awt.CardLayout;
import java.awt.Color;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;

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

public class LayoutExamle {
    JFrame frame;
    JPanel panel;
    JButton b1, b2, b3;
    JLabel l1, l2;
    JTextField t1;

    GridBagConstraints constraints;

    public LayoutExamle(){
        initComp();
    }

    public void initComp(){
        frame = new JFrame("Example");
        frame.setLayout(new CardLayout());

        panel = new JPanel();

        panel.setSize(400, 350);
        panel.setLayout(new GridBagLayout());
        panel.setBackground(Color.WHITE);

        constraints = new GridBagConstraints();

        b1 = new JButton("<<");
        constraints.gridx = 0;
        constraints.gridy = 0;
        constraints.gridwidth = 2;
        constraints.anchor = GridBagConstraints.NORTHWEST;
        constraints.insets = new Insets(12, 43, 0, 0);
        panel.add(b1, constraints);

        b2 = new JButton("Open");
        constraints.gridx = 2;
        constraints.gridy = 0;
        constraints.gridwidth = 2;
        constraints.anchor = GridBagConstraints.NORTHWEST;
        constraints.insets = new Insets(12, 18, 0, 0);
        panel.add(b2, constraints);

        b3 = new JButton(">>");
        constraints.gridx = 4;
        constraints.gridy = 0;
        constraints.anchor = GridBagConstraints.NORTHWEST;
        constraints.insets = new Insets(12, 12, 0, 0);
        panel.add(b3, constraints);

        l1 = new JLabel("jLabel1");
        constraints.gridx = 0;
        constraints.gridy = 1;
        constraints.anchor = GridBagConstraints.NORTHWEST;
        constraints.insets = new Insets(234, 43, 12, 0);
        panel.add(l1, constraints);

        l2 = new JLabel("jLabel1");
        l2.setText("jLabel2");
        constraints.gridx = 2;
        constraints.gridy = 1;
        constraints.anchor = GridBagConstraints.NORTHWEST;
        constraints.insets = new Insets(234, 18, 12, 0);
        panel.add(l2, constraints);

        t1 = new JTextField();
        constraints.gridx = 4;
        constraints.gridy = 1;
        constraints.gridwidth = 2;
        constraints.ipadx = 130;
        constraints.anchor = GridBagConstraints.NORTHWEST;
        constraints.insets = new Insets(230, 12, 12, 31);
        panel.add(t1, constraints);

        frame.add(panel);
        frame.pack();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        new LayoutExamle();
    }
}
导入java.awt.CardLayout;
导入java.awt.Color;
导入java.awt.GridBagConstraints;
导入java.awt.GridBagLayout;
导入java.awt.Insets;
导入javax.swing.JButton;
导入javax.swing.JFrame;
导入javax.swing.JLabel;
导入javax.swing.JPanel;
导入javax.swing.JTextField;
公共类布局Examle{
JFrame框架;
JPanel小组;
按钮b1、b2、b3;
JLabel l1,l2;
jtextfieldt1;
网格约束;
公共布局Examle(){
initComp();
}
public void initComp(){
框架=新的JFrame(“示例”);
frame.setLayout(新的CardLayout());
panel=新的JPanel();
面板设置尺寸(400350);
panel.setLayout(新的GridBagLayout());
面板.立根背景(颜色.白色);
约束=新的GridBagConstraints();
b1=新的JButton(“”);
constraints.gridx=4;
constraints.gridy=0;
constraints.anchor=gridbagsconstraints.NORTHWEST;
constraints.insets=新的insets(12,12,0,0);
面板。添加(b3,约束);
l1=新的JLabel(“jLabel1”);
constraints.gridx=0;
constraints.gridy=1;
constraints.anchor=gridbagsconstraints.NORTHWEST;
constraints.insets=新的insets(234,43,12,0);
面板。添加(l1,约束);
l2=新的JLabel(“jLabel1”);
l2.setText(“jLabel2”);
constraints.gridx=2;
constraints.gridy=1;
constraints.anchor=gridbagsconstraints.NORTHWEST;
constraints.insets=新的insets(234,18,12,0);
panel.add(l2,约束);
t1=新的JTextField();
constraints.gridx=4;
constraints.gridy=1;
约束。网格宽度=2;
constraints.ipadx=130;
constraints.anchor=gridbagsconstraints.NORTHWEST;
constraints.insets=新的insets(230,12,12,31);
面板。添加(t1,约束);
框架。添加(面板);
frame.pack();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
公共静态void main(字符串[]args){
新布局Examle();
}
}
截图:


一种方法是创建两个面板。然后,您可以将面板添加到默认使用边框布局的框架的内容窗格中:

frame.add(topPanel, BorderLayout.PAGE_START);
frame.add(bottomPanel, BorderLayout.PAGE_END);

本教程是一个正确的起点:@Meshu,这样你就可以接受这个答案,如果它对你有用的话,那么其他人也会觉得这个答案很有帮助。不过,我很高兴能帮助你。