Skip to main content

is this BUG in java?

Please note these java.net forums are being decommissioned and use the new and improved forums at https://community.oracle.com/community/java.
1 reply [Last post]
mehdiOnline
Offline
Joined: 2011-12-28

I am developing a Look and Feel in Java. When I apply it to my program, I get this exception/error:(i am using jdk1.6.0_20)

UIDefaults.getUI() failed: no ComponentUI class for: javax.swing.JButton[,0,0,0x
0,invalid,alignmentX=0.0,alignmentY=0.0,border=,flags=0,maximumSize=,minimumSize
=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=null,pa
intBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=false,rolloverIcon=,
rolloverSelectedIcon=,selectedIcon=,text=test1111,defaultCapable=true]
java.lang.Error
at javax.swing.UIDefaults.getUIError(UIDefaults.java:711)
at javax.swing.MultiUIDefaults.getUIError(MultiUIDefaults.java:133)
at javax.swing.UIDefaults.getUI(UIDefaults.java:741)
at javax.swing.UIManager.getUI(UIManager.java:989)
at javax.swing.JButton.updateUI(JButton.java:128)
at javax.swing.AbstractButton.init(AbstractButton.java:2149)
at javax.swing.JButton.(JButton.java:118)
at javax.swing.JButton.(JButton.java:91)
at com.mypackage.mylaf.MyLookAndFeelTest.main(MyLookAndFeelTest.java:7)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:283)
at java.lang.Thread.run(Thread.java:619)

My code:
MyButtonUI class

package com.mypackage.mylaf;

public class MyButtonUI extends BasicButtonUI{
public static ComponentUI createUI(JComponent c) {
return new MyButtonUI();
}

public void paint(Graphics g, JComponent c) {
super.paint(g, c);
//paint Button

}
}//class

MyLookAndFeel class

package com.mypackage.mylaf;
public class MyLookAndFeel extends BasicLookAndFeel{
public boolean isSupportedLookAndFeel() {
return true;
}

public boolean isNativeLookAndFeel() {
return false;
}

public String getDescription() {
return "This is My Look and Feel";
}

public String getID() {
return "MyLookAndFeel";
}

public String getName() {
return "My Look And Feel";
}

protected void initClassDefaults(UIDefaults table) {
super.initClassDefaults(table);

String myPkg="my.";
Object[] classes= {"ButtonUI",myPkg+"MyButtonUI"};

table.putDefaults(classes);
}//initClassDefaults

public void initComponentDefaults(UIDefaults table) {
super.initComponentDefaults(table);

Object[] defaults= {"Button.font", new Font("Tahoma", Font.PLAIN, 10),
"Button.light", new Color(127, 41, 26)
};

table.putDefaults(defaults);
}//initComponentDefaults
}//MyLookAndFeel

MyLookAndFeelTest class

com.mypackage.mylaf; //1

public class MyLookAndFeelTest{ //2
public static void main(String args[]){//3
try{ UIManager.setLookAndFeel(new MyLookAndFeel()); //4
catch(Exception e){}//5
JFrame f=new JFrame();//6
JButton b=new JButton();//7 , this line is in exception

f.add(b); //8
}

When I set Look and Feel in main code with

UIManager.setLookAndFeel(new MyLookAndFeel());

the above exception is thrown. How can I fix it?

I am developing a Look and Feel in Java. When I apply it to my program, I get this exception/error:(

UIDefaults.getUI() failed: no ComponentUI class for: javax.swing.JButton[,0,0,0x
0,invalid,alignmentX=0.0,alignmentY=0.0,border=,flags=0,maximumSize=,minimumSize
=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=null,pa
intBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=false,rolloverIcon=,
rolloverSelectedIcon=,selectedIcon=,text=test1111,defaultCapable=true]
java.lang.Error
at javax.swing.UIDefaults.getUIError(UIDefaults.java:711)
at javax.swing.MultiUIDefaults.getUIError(MultiUIDefaults.java:133)
at javax.swing.UIDefaults.getUI(UIDefaults.java:741)
at javax.swing.UIManager.getUI(UIManager.java:989)
at javax.swing.JButton.updateUI(JButton.java:128)
at javax.swing.AbstractButton.init(AbstractButton.java:2149)
at javax.swing.JButton.(JButton.java:118)
at javax.swing.JButton.(JButton.java:91)
at com.mypackage.mylaf.MyLookAndFeelTest.main(MyLookAndFeelTest.java:7)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:283)
at java.lang.Thread.run(Thread.java:619)

My code:
MyButtonUI class

package com.mypackage.mylaf;

public class MyButtonUI extends BasicButtonUI{
public static ComponentUI createUI(JComponent c) {
return new MyButtonUI();
}

public void paint(Graphics g, JComponent c) {
super.paint(g, c);
//paint Button

}
}//class

MyLookAndFeel class

package com.mypackage.mylaf;
public class MyLookAndFeel extends BasicLookAndFeel{
public boolean isSupportedLookAndFeel() {
return true;
}

public boolean isNativeLookAndFeel() {
return false;
}

public String getDescription() {
return "This is My Look and Feel";
}

public String getID() {
return "MyLookAndFeel";
}

public String getName() {
return "My Look And Feel";
}

protected void initClassDefaults(UIDefaults table) {
super.initClassDefaults(table);

String myPkg="my.";
Object[] classes= {"ButtonUI",myPkg+"MyButtonUI"};

table.putDefaults(classes);
}//initClassDefaults

public void initComponentDefaults(UIDefaults table) {
super.initComponentDefaults(table);

Object[] defaults= {"Button.font", new Font("Tahoma", Font.PLAIN, 10),
"Button.light", new Color(127, 41, 26)
};

table.putDefaults(defaults);
}//initComponentDefaults
}//MyLookAndFeel

MyLookAndFeelTest class

com.mypackage.mylaf; //1

public class MyLookAndFeelTest{ //2
public static void main(String args[]){//3
try{ UIManager.setLookAndFeel(new MyLookAndFeel()); //4
catch(Exception e){}//5
JFrame f=new JFrame();//6
JButton b=new JButton();//7 , this line is in exception

f.add(b); //8
}

When I set Look and Feel in main code with

UIManager.setLookAndFeel(new MyLookAndFeel());

the above exception is thrown. How can I fix it?I am developing a Look and Feel in Java. When I apply it to my program, I get this exception/error:

UIDefaults.getUI() failed: no ComponentUI class for: javax.swing.JButton[,0,0,0x
0,invalid,alignmentX=0.0,alignmentY=0.0,border=,flags=0,maximumSize=,minimumSize
=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=null,pa
intBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=false,rolloverIcon=,
rolloverSelectedIcon=,selectedIcon=,text=test1111,defaultCapable=true]
java.lang.Error
at javax.swing.UIDefaults.getUIError(UIDefaults.java:711)
at javax.swing.MultiUIDefaults.getUIError(MultiUIDefaults.java:133)
at javax.swing.UIDefaults.getUI(UIDefaults.java:741)
at javax.swing.UIManager.getUI(UIManager.java:989)
at javax.swing.JButton.updateUI(JButton.java:128)
at javax.swing.AbstractButton.init(AbstractButton.java:2149)
at javax.swing.JButton.(JButton.java:118)
at javax.swing.JButton.(JButton.java:91)
at com.mypackage.mylaf.MyLookAndFeelTest.main(MyLookAndFeelTest.java:7)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:283)
at java.lang.Thread.run(Thread.java:619)

My code:
MyButtonUI class

package com.mypackage.mylaf;

public class MyButtonUI extends BasicButtonUI{
public static ComponentUI createUI(JComponent c) {
return new MyButtonUI();
}

public void paint(Graphics g, JComponent c) {
super.paint(g, c);
//paint Button

}
}//class

MyLookAndFeel class

package com.mypackage.mylaf;
public class MyLookAndFeel extends BasicLookAndFeel{
public boolean isSupportedLookAndFeel() {
return true;
}

public boolean isNativeLookAndFeel() {
return false;
}

public String getDescription() {
return "This is My Look and Feel";
}

public String getID() {
return "MyLookAndFeel";
}

public String getName() {
return "My Look And Feel";
}

protected void initClassDefaults(UIDefaults table) {
super.initClassDefaults(table);

String myPkg="my.";
Object[] classes= {"ButtonUI",myPkg+"MyButtonUI"};

table.putDefaults(classes);
}//initClassDefaults

public void initComponentDefaults(UIDefaults table) {
super.initComponentDefaults(table);

Object[] defaults= {"Button.font", new Font("Tahoma", Font.PLAIN, 10),
"Button.light", new Color(127, 41, 26)
};

table.putDefaults(defaults);
}//initComponentDefaults
}//MyLookAndFeel

MyLookAndFeelTest class

com.mypackage.mylaf; //1

public class MyLookAndFeelTest{ //
public static void main(String args[]){//3
try{ UIManager.setLookAndFeel(new MyLookAndFeel()); //4
catch(Exception e){}//5
JFrame f=new JFrame();//6
JButton b=new JButton();//7 , this line is in exception

f.add(b); //8
}

When I set Look and Feel in main code with

UIManager.setLookAndFeel(new MyLookAndFeel());

the above exception is thrown. How can I fix it?

Reply viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.
mehdiOnline
Offline
Joined: 2011-12-28

i resolved my problem,

in initClassDefaults method in MyLookAndFeel class instead of this line String myPkg="my."; i put this code:String myPkg="com.mypackage.mylaf" that is my package.