我试图找出GridBagLayout是如何工作的,因为我从未使用过它。我会发布源代码和图片的gui。我对部件有问题。我想把按钮放在两个组件的中间(一个是checkboxgroup,另一个是JTextArea。我管理,但它是在底部的联盟,我希望它是在两个组件的高度中间。
public class GUI extends JFrame {
public GUI(){
setSize(600,400);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setTitle("ridBagLayout[![enter image description here][1]][1]");
JPanel panel=new JPanel(new GridBagLayout());
GridBagConstraints c=new GridBagConstraints();
String[]niz={"C Sharp","Java","PHP","VisualBasic"};
c.anchor=GridBagConstraints.PAGE_START;
c.weighty=1.0;
c.gridx=0;
c.gridy=0;
c.insets=new Insets(30,30,0,0);
panel.add(new JComboBox(niz),c);
c.gridx=1;
//c.insets=new Insets(10,0,0,0);
panel.add(new JButton("Get drop down item"),c);
c.gridx=2;
c.ipadx=20;
panel.add(new JTextField(15),c);
JCheckBox visualBasic=new JCheckBox("Visual Basic");
JCheckBox cSharp=new JCheckBox("C Sharp");
JCheckBox java=new JCheckBox("Java");
JCheckBox php=new JCheckBox("PHP");
JPanel checkbox=new JPanel();
checkbox.setLayout(new GridLayout(4,0,5,5));
checkbox.add(visualBasic);
checkbox.add(cSharp);
checkbox.add(java);
checkbox.add(php);
javax.swing.border.Border raisedetched = BorderFactory.createEtchedBorder(EtchedBorder.RAISED);
checkbox.setBorder(raisedetched);
c.insets=new Insets(0,20,0,0);
c.gridx=0;
c.gridy=1;
panel.add(checkbox,c);
c.gridx=1;
c.ipadx=30;
c.anchor=GridBagConstraints.CENTER;
panel.add(new JButton("Selected Item"),c);
c.gridx=2;
c.gridy=1;
c.ipadx=20;
c.anchor=GridBagConstraints.NORTH;
panel.add(new JTextArea(7,15),c);
add(panel);
setVisible(true);
}}

发布于 2017-04-16 12:55:40
GridBagLayout是在Java中使用的最强大的布局之一,但是它需要一些嵌套才能获得良好的结果。
在您的情况下,您可能需要将该按钮放在面板中,并将其对齐属性设置为CENTER。
关于GridBagLayout有很多文档,但是查看它如何工作的另一种方法是在NetBeans这样的IDE中创建一个新项目,并通过图形化编辑器创建该GUI,并查看生成的代码。
https://stackoverflow.com/questions/43437321
复制相似问题