首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将一个零部件右对齐,并将其他几个零部件居中对齐

将一个零部件右对齐,并将其他几个零部件居中对齐
EN

Stack Overflow用户
提问于 2011-02-25 11:18:41
回答 3查看 639关注 0票数 0

我需要使用标准的Swing布局管理器或Mig来布局几个组件。

我有一个类似于媒体播放器轨迹栏和控制按钮的控件(即,在轨迹栏下面指示当前位置的倒带、播放、快进):

代码语言:javascript
运行
复制
<-----------------[CURRENT POSITION]----------------------------------------->
[-------------------------------[RW][PLAY][FF]------------------------------->

播放按钮必须与轨迹栏保持100%居中。但是,我需要在不偏移其他按钮的情况下引入一个右对齐的额外复选框,如下所示:

代码语言:javascript
运行
复制
<-----------------[CURRENT POSITION]----------------------------------------->
[-[CB]--------------------------[RW][PLAY][FF]------------------------------->
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-02-25 13:54:14

您可以使用具有一行和两列的面板;GridLayout会自动均匀地隔开您的组件以适合面板。

所以你可以拥有像这样的东西

代码语言:javascript
运行
复制
controlsPanel.setLayout(new GridLayout(1, 5));

controlsPanel.add(checkbox);
controlsPanel.add(rewindButton);
controlsPanel.add(playButton); //in the center
controlsPanel.add(fastForwardButton);
controlsPanel.add(new JLabel()); //placeholder for the grid

GridLayout将自动使所有这些元素具有相同的大小和间距。

如果希望复选框离播放按钮更远,可以使用更多列,并用更多占位符填充其间的空白处。

代码语言:javascript
运行
复制
controlsPanel.setLayout(new GridLayout(1, 7));

controlsPanel.add(checkbox);
controlsPanel.add(new JLabel); //left placeholder
controlsPanel.add(rewindButton);
controlsPanel.add(playButton); //in the center
controlsPanel.add(fastForwardButton);
controlsPanel.add(new JLabel); //right placeholder
controlsPanel.add(new JLabel()); //final placeholder
票数 1
EN

Stack Overflow用户

发布于 2011-02-25 12:42:48

代码语言:javascript
运行
复制
[-[CB]--------------------------[RW][PLAY][FF]---------------------------[DC]> 

在面板的右侧添加一个“虚拟组件”(DC)。将其宽度设置为与复选框的宽度相同。这将使您的按钮居中显示在屏幕上。您应该能够使用Box.createHorizontalStrut(...)此组件的。

您可以使用水平BoxLayout进行行布局。添加复选框,然后添加一些水平胶水,然后添加按钮,再添加一些水平胶水,最后添加水平支柱。

票数 1
EN

Stack Overflow用户

发布于 2011-03-02 15:39:17

我最终使用了以下内容:

代码语言:javascript
运行
复制
setLayout(new MigLayout("fillx", "[200][][200]", ""));
JPanel buttonPanel = new JPanel();
buttonPanel.add(firstButton);
buttonPanel.add(reverseButton);
buttonPanel.add(playButton);
buttonPanel.add(forwardButton);
buttonPanel.add(lastButton);

add(maintainCurrentTimeCheckBox, "grow");
add(buttonPanel, "grow");
add(currentTimeLabel, "grow");
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5113226

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档