社区
Java SE
帖子详情
JOptionPane的button显示位置问题
zmxboy
2009-01-03 08:26:09
可以把JOptionPane显示出的dialog上的按钮设置成靠左显示或者靠右显示吗?如果要设置button和边框的距离可以吗(比方说让button显示在离右边框1像素的地方)?望提示,谢谢。
...全文
284
20
打赏
收藏
JOptionPane的button显示位置问题
可以把JOptionPane显示出的dialog上的按钮设置成靠左显示或者靠右显示吗?如果要设置button和边框的距离可以吗(比方说让button显示在离右边框1像素的地方)?望提示,谢谢。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
20 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zmxboy
2009-01-05
打赏
举报
回复
有点眉目了,位置移动了,不过要精确的调整离边距的像素还要花点时间。
谢谢gongfuliang朋友啊
zmxboy
2009-01-05
打赏
举报
回复
而且我始终认为这个思路不正确
createButtonArea()创建的只是一个收容button的panel,这个panel是在installComponents()中添加到JOptionPane对象上的,我觉得应该在installComponents()中添加那个panel时设置这个panel在JOptionPane上的位置,就想我上面贴过的那段代码那样。但是那样做也没效果。。。。。。
zmxboy
2009-01-05
打赏
举报
回复
[Quote=引用 16 楼 gongfuliang 的回复:]
addButtonComponents是在createButtonArea中在调用的,你重写不调用这个方法就可以了,自己添加Button不行吗?
[/Quote]
刚才也想到了,但是没效果~
gongfuliang
2009-01-05
打赏
举报
回复
要不然让你自己设置Layout干什么
gongfuliang
2009-01-05
打赏
举报
回复
addButtonComponents是在createButtonArea中在调用的,你重写不调用这个方法就可以了,自己添加Button不行吗?
zmxboy
2009-01-05
打赏
举报
回复
[Quote=引用 14 楼 gongfuliang 的回复:]
panel.setLayout(new FlowLayout(FlowLayout.RIGHT/LEFT))
不就可以了吗?
[/Quote]
你这样做行不通的,在addButtonComponents()里会把那个panel的layout强制转换为ButtonAreaLayout,这个时候会出异常的。
mizukusa
2009-01-04
打赏
举报
回复
貌似不可以
gongfuliang
2009-01-04
打赏
举报
回复
只能重写,要不JOptionPane中buttonPanel是流水布局的
zmxboy
2009-01-04
打赏
举报
回复
自己顶~
gongfuliang
2009-01-04
打赏
举报
回复
panel.setLayout(new FlowLayout(FlowLayout.RIGHT/LEFT))
不就可以了吗?
gongfuliang
2009-01-04
打赏
举报
回复
[Quote=引用 7 楼 zmxboy 的回复:]
那个好像行不通,createButtonArea() 返回的是收容button的panel,而这个panel是在installDefaults()里设置到JOptionPane上的,所以应该在installDefaults()add这个panel的时候指定位置。
但是installDefaults()这个方法内部的处理很多,不知道怎么重写~望高人再赐教。
[/Quote]
createButtonArea() 就是返回JPanel,你不会重新设置JPanel的Layout,返回一个自己的JPanel吗?
zmxboy
2009-01-04
打赏
举报
回复
public class MyDialogUI extends BasicOptionPaneUI {
public NEmsComDialogUI(){
}
protected void installComponents() {
GridBagConstraints gridBagCons = new GridBagConstraints();
gridBagCons.gridx = 2;
gridBagCons.gridy = 2;
gridBagCons.anchor = GridBagConstraints.SOUTHEAST;
gridBagCons.fill = 0;
optionPane.add(createMessageArea());
Container separator = createSeparator();
if ( separator != null ) {
optionPane.add(separator);
}
optionPane.add(createButtonArea(), gridBagCons);
optionPane.applyComponentOrientation(optionPane.getComponentOrientation());
}
}
然后:
optDlg = new JOptionPane()
MyDialogUI ui = new MyDialogUI();
optDlg.setUI(ui);
为什么不行呢?望指教啊~
深藏Blue_dct
2009-01-04
打赏
举报
回复
[Quote=引用 9 楼 bzwm 的回复:]
干脆自己写一个 dialog 算了。
照着JOptionPane.showMessageDialog 的样子。
[/Quote]
说的对,重写JOptionPane思路比清楚 自己写一个比较好懂一点
zmxboy
2009-01-04
打赏
举报
回复
失败了~~~~设置上去没反应。。。。。
重写不可能,时间不够~~~
bzwm
2009-01-04
打赏
举报
回复
干脆自己写一个 dialog 算了。
照着JOptionPane.showMessageDialog 的样子。
zmxboy
2009-01-04
打赏
举报
回复
上面说错,是在installComponents()这个方法里,貌似代码不多,再试试
zmxboy
2009-01-04
打赏
举报
回复
那个好像行不通,createButtonArea() 返回的是收容button的panel,而这个panel是在installDefaults()里设置到JOptionPane上的,所以应该在installDefaults()add这个panel的时候指定位置。
但是installDefaults()这个方法内部的处理很多,不知道怎么重写~望高人再赐教。
zmxboy
2009-01-04
打赏
举报
回复
[Quote=引用 5 楼 gongfuliang 的回复:]
继承BasicOptionPaneUI,重写createButtonArea()
将JOptionPane的UI设置为自定义的UI
[/Quote]
好的,谢谢。这就试试。
成功了给分,哈哈
gongfuliang
2009-01-04
打赏
举报
回复
继承BasicOptionPaneUI,重写createButtonArea()
将JOptionPane的UI设置为自定义的UI
zmxboy
2009-01-04
打赏
举报
回复
[Quote=引用 2 楼 gongfuliang 的回复:]
只能重写,要不JOptionPane中buttonPanel是流水布局的
[/Quote]
能否说的详细点?重写JOptionPane的哪个方法?
button
_java_clayjt1_
图形界面示例,有登录窗口、确认按键、提示窗口等
java点击按钮弹出对话框
java点击弹出对话框
点击按钮弹出对话框代码
点击按钮弹出对话框代码
Java弹出窗口代码
弹出可关闭的窗口,简易复制,依据自己的需求调整样式即可
练习58文件选择器.doc
练习58文件选择器.doc
Java SE
62,634
社区成员
307,269
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章