2014-09-26 91 views
1

我已经使用UIManager设置修改了JOptionPane的字体,但我无法找到属性来更改按钮属性。 例如。我想删除文本边框,如下所示。另外我想删除Y和N下的下划线,如下所示。更改JOptionPane按钮属性和背景颜色

enter image description here

而且,我可以改变的JOptionPane的背景颜色从这个灰白色别的东西?

+0

实际上,这可以很容易,你可以仔细看看['JOptionPane.showOptionDialog(Component parentComponent,Object message,String title,int optionType,int messageType,Icon icon, Object [] options,Object initialValue)'](http://docs.oracle.com/javase/7/docs/api/javax/swing/JOptionPane.html#showOptionDialog(java.awt.Component,%20java.lang。对象,%20java.lang.String,%20int,%20int,%20javax.swing.Icon,%20java.lang.Object [],%20java.lang.Object)),这将允许您传递自定义按钮'选项'参数 – MadProgrammer 2014-09-26 12:13:44

+0

但是你会负责管理对话状态,这不是一件容易的事情 – MadProgrammer 2014-09-26 12:14:04

+0

作为[示例](http://stackoverflow.com/questions/14591089/joptionpane-passing-custom-按钮/ 14591165#14591165) – MadProgrammer 2014-09-26 12:15:03

回答

0

你可以改变个人的对话:

你需要一个customJDialog和一个自定义的JOptionPane。按钮强调匹配助记符的第一个字母。将其更改为未使用的内容。矩形是关于按钮焦点。

JDialog dialog = new JDialog(); 

JOptionPane pane = new JOptionPane("Some Message", 
JOptionPane.PLAIN_MESSAGE, JOptionPane.YES_NO_OPTION); 

List<JButton> list = SwingUtils.getDescendantsOfType(JButton.class, pane); 
//this method is part of the SwingUtils. It is free to use. You can download it from the link. 

pane.setBackground(Color.green); //this does not completely change the background. I am not sure how you can change it completely 

for (JButton b : list) { 
    b.setMnemonic(0); //call it with an int or char that does not exist in your button. 
    b.setFocusable(false); //removes the rectangle 
    b.setBackground(Color.red); 
    //you can do more since you have direct access to the button 
} 

如果你有Java自定义没有经验的JOptionPane检查了这一点的按钮操作:Pressing Yes/No on embedded JOptionPane has no effect

SwingUtil链接:http://tips4java.wordpress.com/2008/11/13/swing-utils/

如果您想将代码放到图书馆阅读:http://www.programcreek.com/2011/07/build-a-java-library-for-yourself/

+0

如果它有效,这将是非常尴尬的!谢谢..我会尽快尝试这个:) – Gagan93 2014-12-27 15:01:13