gpt4 book ai didi

java - 组布局中的居中定位 (Swing)

转载 作者:行者123 更新时间:2023-12-01 04:13:02 26 4
gpt4 key购买 nike

我正在尝试使用 GroupLayout 让“>>”按钮垂直居中。

但正如你所看到的,它把它放在了靠近顶部的位置。我尝试过修改布局,但似乎无法让它工作。请帮忙! =)

horizontal_group = layout.createParallelGroup GroupLayout::Alignment::CENTER
horizontal_group.addComponent tags_label
available_across_hor = layout.createSequentialGroup
available_down_hor = layout.createParallelGroup GroupLayout::Alignment::CENTER
available_down_hor.addComponent available_label
available_down_hor.addComponent available_pane
available_down_hor.addComponent new_tag_button
selected_down_hor = layout.createParallelGroup GroupLayout::Alignment::CENTER
selected_down_hor.addComponent selected_label
selected_down_hor.addComponent selected_pane
selected_down_hor.addComponent remove_tag_button
available_across_hor.addGroup available_down_hor
available_across_hor.addComponent move_button
available_across_hor.addGroup selected_down_hor
horizontal_group.addGroup available_across_hor

vertical_group = layout.createSequentialGroup
vertical_group.addComponent tags_label
available_across_ver = layout.createParallelGroup
available_down_ver = layout.createSequentialGroup
available_down_ver.addComponent available_label
available_down_ver.addComponent available_pane
available_down_ver.addComponent new_tag_button
selected_down_ver = layout.createSequentialGroup
selected_down_ver.addComponent selected_label
selected_down_ver.addComponent selected_pane
selected_down_ver.addComponent remove_tag_button
available_across_ver.addGroup available_down_ver
available_across_ver.addComponent move_button
available_across_ver.addGroup selected_down_ver
vertical_group.addGroup available_across_ver

layout.setHorizontalGroup horizontal_group
layout.setVerticalGroup vertical_group

UI

最佳答案

解决方案如下:

package com.zetcode;

import java.awt.Container;
import java.awt.EventQueue;
import javax.swing.GroupLayout;
import static javax.swing.GroupLayout.Alignment.CENTER;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JScrollPane;


public class GroupLayoutTags extends JFrame {

public GroupLayoutTags() {

initUI();

setTitle("Tags");
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

private void initUI() {

Container pane = getContentPane();
GroupLayout gl = new GroupLayout(pane);
pane.setLayout(gl);

JLabel avLbl = new JLabel("Available");
JLabel tagsLbl = new JLabel("Tags");
JLabel selLbl = new JLabel("Selected");

JButton newBtn = new JButton("New");
JButton moveBtn = new JButton(">>");
JButton remBtn = new JButton("Remove");

JList leftList = new JList();
JScrollPane spleft = new JScrollPane(leftList);
JList rightList = new JList();
JScrollPane spright = new JScrollPane(rightList);

gl.setAutoCreateGaps(true);
gl.setAutoCreateContainerGaps(true);

gl.setHorizontalGroup(gl.createParallelGroup(CENTER)
.addComponent(tagsLbl)
.addGroup(gl.createSequentialGroup()
.addGroup(gl.createParallelGroup(CENTER)
.addComponent(avLbl)
.addComponent(spleft, 100, 200, Short.MAX_VALUE)
.addComponent(newBtn))
.addComponent(moveBtn)
.addGroup(gl.createParallelGroup(CENTER)
.addComponent(selLbl)
.addComponent(spright, 100, 200, Short.MAX_VALUE)
.addComponent(remBtn)))
);

gl.setVerticalGroup(gl.createSequentialGroup()
.addComponent(tagsLbl)
.addGroup(gl.createParallelGroup(CENTER)
.addGroup(gl.createSequentialGroup()
.addComponent(avLbl)
.addComponent(spleft, 100, 250, Short.MAX_VALUE)
.addComponent(newBtn))
.addComponent(moveBtn)
.addGroup(gl.createSequentialGroup()
.addComponent(selLbl)
.addComponent(spright, 100, 250, Short.MAX_VALUE)
.addComponent(remBtn)))
);

pack();

}


public static void main(String[] args) {

EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
GroupLayoutTags ex = new GroupLayoutTags();
ex.setVisible(true);
}
});
}
}

如果发现MigLayout管理器比GroupLayout更容易使用。不过,通过一些实践,GroupLayout 也是可行的。

GroupLayout tags

关于java - 组布局中的居中定位 (Swing),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19733128/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com