Java GridLayout 如何将两列合并为一列?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java GridLayout 如何将两列合并为一列?相关的知识,希望对你有一定的参考价值。
有四列,放三个控件进去,其中第二个想放在第二和第三列,怎么实现啊
谢谢
你可参照这个连接的回答:
http://zhidao.baidu.com/question/110748776.html
addOomponent(container,layout,constraints,你的组件,0,0,1,2,10,10)
给你一个接口:
/* * <p> 功能强大的工具函数:布局器
* <p> 具体功能:
* <p> 将 componentToAdd 组件安装到 container 容器中的
* <p> 第 row 行, 第 column 列,并在 container 容器中
* <p> 占据 height 行,width 列, 在X,Y方向分别可伸展x和y长
* <p> 备注:要能如此挑剔的地布局,container 必须预先设定为网格布局器:GridBagLayout,
* <p> 然后用 GridBagContstraints 协调布局
* <p>原函数来自"Java程序设计教程"第五版 P530页,函数有被我加强功能
* @param container Container 要布局的容器
* @param layout GridBagLayout 网格布局器
* @param constraints GridBagConstraints 约束器
* @param componentToAdd Component 要添加的目标组件
* @param row 目标组件要添加的行
* @param column 目标组件要添加的列
* @param height 目标组件占据的高度
* @param width 目标组件占据的宽度
* @param x 目标组件在水平方向的拉伸能力
* @param y 目标组件在垂直方向的拉伸能力<p>*/
protected void addComponent(
Container container, GridBagLayout layout,
GridBagConstraints constraints,
Component componentToAdd, int row, int column, int height,
int width, int x, int y)
constraints.gridx = column; //组件所在列
constraints.gridy = row; //组件所在行
constraints.gridwidth = width; //组件宽度
constraints.gridheight = height; //组件高度
constraints.weightx = x; //组件在水平方向的拉伸能力
constraints.weighty = y; //组件在垂直方向的拉伸能力
layout.setConstraints(componentToAdd, constraints); //设置目标组件的约束
container.add(componentToAdd); //在容器中添加目标组件
参考技术A 你可参照这个连接的回答:
http://zhidao.baidu.com/question/110748776.html
addOomponent(container,layout,constraints,你的组件,0,0,1,2,10,10)
给你一个接口:
/* * <p> 功能强大的工具函数:布局器
* <p> 具体功能:
* <p> 将 componentToAdd 组件安装到 container 容器中的
* <p> 第 row 行, 第 column 列,并在 container 容器中
* <p> 占据 height 行,width 列, 在X,Y方向分别可伸展x和y长
* <p> 备注:要能如此挑剔的地布局,container 必须预先设定为网格布局器:GridBagLayout,
* <p> 然后用 GridBagContstraints 协调布局
* <p>原函数来自"Java程序设计教程"第五版 P530页,函数有被我加强功能
* @param container Container 要布局的容器
* @param layout GridBagLayout 网格布局器
* @param constraints GridBagConstraints 约束器
* @param componentToAdd Component 要添加的目标组件
* @param row 目标组件要添加的行
* @param column 目标组件要添加的列
* @param height 目标组件占据的高度
* @param width 目标组件占据的宽度
* @param x 目标组件在水平方向的拉伸能力
* @param y 目标组件在垂直方向的拉伸能力<p>*/
protected void addComponent(
Container container, GridBagLayout layout,
GridBagConstraints constraints,
Component componentToAdd, int row, int column, int height,
int width, int x, int y)
constraints.gridx = column; //组件所在列
constraints.gridy = row; //组件所在行
constraints.gridwidth = width; //组件宽度
constraints.gridheight = height; //组件高度
constraints.weightx = x; //组件在水平方向的拉伸能力
constraints.weighty = y; //组件在垂直方向的拉伸能力
layout.setConstraints(componentToAdd, constraints); //设置目标组件的约束
container.add(componentToAdd); //在容器中添加目标组件
参考技术B 用两个GridLayout来实现
将两列中的数据合并为一列进行排序
【中文标题】将两列中的数据合并为一列进行排序【英文标题】:Combining the data in two columns into one for sorting 【发布时间】:2012-01-20 13:55:23 【问题描述】:我正在尝试 UNION SELECT 中的两列,并为第三列加上别名。
我还需要检索匹配 WHERE 子句的数据,然后按别名列 (MLS_SORT) 排序。
这个以及我尝试过的它的变体都不起作用。
SELECT *
FROM
(SELECT MLS_AGENT_ID AS MLS_SORT FROM mlsdata)
UNION
(SELECT MLS_OFFICE_ID AS MLS_SORT FROM mlsdata)
WHERE (MLS_AGENT_ID = $agent_narid) OR (MLS_OFFICE_ID = $office_narid)
ORDER BY MLS_SORT
这部分确实有效,并使用正确的值创建了 MLS_SORT 别名,但我不知道如何将结果限制为上面的 WHERE 子句:
(SELECT MLS_AGENT_ID AS MLS_SORT FROM mlsdata)
UNION
(SELECT MLS_OFFICE_ID AS MLS_SORT FROM mlsdata)
我是否至少走上了正确的道路,或者这不是正确的继续方式?
感谢您的帮助。
【问题讨论】:
【参考方案1】:诀窍在于理解UNION的语法:查询UNION查询
我想你想要:
SELECT MLS_SORT
FROM
(
SELECT MLS_AGENT_ID AS MLS_SORT
FROM mlsdata
WHERE MLS_AGENT_ID = $agent_narid
UNION
SELECT MLS_OFFICE_ID AS MLS_SORT
FROM mlsdata
WHERE MLS_OFFICE_ID = $office_narid
)
ORDER BY MLS_SORT
要将两个 ID 子集放入一个结果集中,然后对它们进行排序。
但是,整个查询看起来将提供两行结果集——一行用于代理,另一行用于办公室。那是你要的吗?
您的逻辑有效地将代理 ID 和办公室 ID 编号转换为单个结果集。这对您的应用有意义吗?
【讨论】:
感谢您的回复。我确实希望有一个派生列 MLS_SORT,它将包含代理 ID 和办公室 ID 的组合结果。表中不存在 MLS_SORT。基本上检索agent id = agent id或office id = office id的所有记录,将agent id和office id数据合并为一列,然后按该列排序。 我试过你的代码但收到:mysql_num_rows(): 提供的参数不是有效的 MySQL 结果资源 ....和 mysql_fetch_array(): 提供的参数不是有效的 MySQL 结果资源...尝试将 MLS_SORT 更改为 *,结果相同。 我认为 $agent_narid 和 $office_narid 项目会被您用来编写发出查询的代码的任何语言所取代(PHP?您没有提到它)。您收到的消息来自该语言,而不是来自 mySQL 服务器。您可以尝试使用常量来代替那些 $variable 项进行调试。一旦成功,您就可以进行替换。 是的,PHP,对不起!我会试一试的。谢谢!【参考方案2】:试试这样的:
select * from
(
(SELECT MLS_AGENT_ID AS MLS_SORT
FROM mlsdata
WHERE (MLS_AGENT_ID = $agent_narid)
)
UNION
(SELECT MLS_OFFICE_ID AS MLS_SORT
FROM mlsdata
WHERE (MLS_OFFICE_ID = $office_narid)
)) a
ORDER BY MLS_SORT
编辑:
交替顺序
ORDER BY 1
【讨论】:
嗨兰迪,使用你的例子,(在 union 之后添加 ALL 以获得所有 11 个结果),我得到了 MLS_SORT 列的正确结果。办公室和代理 ID 相结合。但是,即使使用了 *,也不会检索到其他数据。 即使检索到的行数为 11,但只有 MLS_SORT 列有数据...如果我将 * 更改为任何其他列名(存在),我得到:警告:mysql_num_rows() : 提供的参数不是有效的 MySQL 结果资源...有什么想法吗? 您的 order by 必须包含子选择中的一个名称...您可以尝试使用 '1' 代替以指示第一列的 order...以上是关于Java GridLayout 如何将两列合并为一列?的主要内容,如果未能解决你的问题,请参考以下文章