社区
Java SE
帖子详情
JOptionPane的button显示位置问题
zmxboy
2009-01-03 08:26:09
可以把JOptionPane显示出的dialog上的按钮设置成靠左显示或者靠右显示吗?如果要设置button和边框的距离可以吗(比方说让button显示在离右边框1像素的地方)?望提示,谢谢。
...全文
275
20
打赏
收藏
JOptionPane的button显示位置问题
可以把JOptionPane显示出的dialog上的按钮设置成靠左显示或者靠右显示吗?如果要设置button和边框的距离可以吗(比方说让button显示在离右边框1像素的地方)?望提示,谢谢。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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的哪个方法?
仿QQ登录窗体,拉伸展开!
import javax.swing.
JOptionPane
; import javax.swing.JPanel; import javax.swing.JPasswordField; import javax.swing.JTextField; import javax.swing.UIManager; import com.jdbc.DB; import com.window.Main; ...
Java高级课程设计--网络聊天室
Button
send
button
= new
Button
("发送"); List list = new List(); TextField content = new TextField(20); TextField servername = new TextField("localhost", 20); Label label = new Label("输入...
用java编写的记事本,基本功能都实现了啊!
//
显示
对话框
JOptionPane
.showOptionDialog(null, "程序名称:\n JNotePad \n" + "程序设计:\n \n" + "简介:\n 一个简单的文字编辑器\n" + " 可作为验收Java的实现对象\n" + " 欢迎网友下载研究交流\n\n...
java项目之教务管理系统
tool.add("修改学生信息", create
Button
("修改学生信息", "img/switchuser.png")); tool.add("删除学生信息", create
Button
("删除学生信息", "img/switchuser.png")); tool.add("帮助", create
Button
("帮助...
JAVA编写的图书馆管理系统
showReader=new J
Button
("
显示
信息"); showReader.addActionListener(this); add(showReader,BorderLayout.NORTH); setBounds(200,200,500,500); setVisible(true); } public void actionPerformed...
Java SE
62,614
社区成员
307,326
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章