JOptionPane的button显示位置问题 可以把JOptionPane显示出的dialog上的按钮设置成靠左显示或者靠右显示吗?如果要设置button和边框的距离可以吗(比方说让button显示在离右边框1像素的地方)?望提示,谢谢。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 只能重写,要不JOptionPane中buttonPanel是流水布局的 能否说的详细点?重写JOptionPane的哪个方法? 继承BasicOptionPaneUI,重写createButtonArea()将JOptionPane的UI设置为自定义的UI 那个好像行不通,createButtonArea() 返回的是收容button的panel,而这个panel是在installDefaults()里设置到JOptionPane上的,所以应该在installDefaults()add这个panel的时候指定位置。但是installDefaults()这个方法内部的处理很多,不知道怎么重写~望高人再赐教。 上面说错,是在installComponents()这个方法里,貌似代码不多,再试试 干脆自己写一个 dialog 算了。照着JOptionPane.showMessageDialog 的样子。 说的对,重写JOptionPane思路比清楚 自己写一个比较好懂一点 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);为什么不行呢?望指教啊~ createButtonArea() 就是返回JPanel,你不会重新设置JPanel的Layout,返回一个自己的JPanel吗? panel.setLayout(new FlowLayout(FlowLayout.RIGHT/LEFT))不就可以了吗? 你这样做行不通的,在addButtonComponents()里会把那个panel的layout强制转换为ButtonAreaLayout,这个时候会出异常的。 addButtonComponents是在createButtonArea中在调用的,你重写不调用这个方法就可以了,自己添加Button不行吗? 要不然让你自己设置Layout干什么 而且我始终认为这个思路不正确createButtonArea()创建的只是一个收容button的panel,这个panel是在installComponents()中添加到JOptionPane对象上的,我觉得应该在installComponents()中添加那个panel时设置这个panel在JOptionPane上的位置,就想我上面贴过的那段代码那样。但是那样做也没效果 有点眉目了,位置移动了,不过要精确的调整离边距的像素还要花点时间。谢谢gongfuliang朋友啊 String没值的时候是null还是“” java int转换为byte的问题 关于java中向函数传递数组参数和返回数组的问题 jdk 自带hashmap类put方法的改写 调用paint(Graphics g)函数时传参数的问题 Java写音乐播放器问题 对于IO流始终不太明白 字符转换的问题 刚才有个帖子,自己删除了,还是说一下,关于文字分段的 十万火急!!为什么我的Jbuilder5卸载之后再重装就不能用了?各位高手请进! 关于HashSet的问题? java 为什么我从串口没有接收到完整的字符串 而且每次接收的字符串个数都不同
说的对,重写JOptionPane思路比清楚 自己写一个比较好懂一点
}
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);为什么不行呢?望指教啊~
createButtonArea() 就是返回JPanel,你不会重新设置JPanel的Layout,返回一个自己的JPanel吗?
你这样做行不通的,在addButtonComponents()里会把那个panel的layout强制转换为ButtonAreaLayout,这个时候会出异常的。
createButtonArea()创建的只是一个收容button的panel,这个panel是在installComponents()中添加到JOptionPane对象上的,我觉得应该在installComponents()中添加那个panel时设置这个panel在JOptionPane上的位置,就想我上面贴过的那段代码那样。但是那样做也没效果
谢谢gongfuliang朋友啊