Collectives™ on Stack Overflow
Find centralized, trusted content and collaborate around the technologies you use most.
Learn more about Collectives
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
Learn more about Teams
I'm trying to add a constructor to the
javax.swing.ImageIcon
. It shall resolve the directory structure to be able to access the
ImageIcon
class like a image map.
What I'm trying to do is:
public class CPImageIcon extends ImageIcon {
public CPImageIcon(String name) {
super(this.getClass().getResource("/desktopapplication1/resources/" + name), "description");
but this leads to:
warning: [options] bootstrap class path not set in conjunction with -source 1.7
I:\DesktopApplication1\src\desktopapplication1\CPImageIcon.java:18: error: cannot reference this before supertype constructor has been called
super(this.getClass().getResource("/desktopapplication1/resources/" + name),"");
If I try to super other constructors it works.
–
super
constructor must be the first call in subclasses constructors.
If ommitted it will call automatically to default constructor super()
.
this
represent the current instance, and can't be used before calling super.
You could use the following approach, commented or uncommented:
import javax.swing.*;
public class CPImageIcon extends ImageIcon {
public CPImageIcon(String name) {
super(CPImageIcon.class.getResource("/desktopapplication1/resources/" + name), "description");
// super(Thread.currentThread().getContextClassLoader().getResource("/desktopapplication1/resources/" + name), "description");
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.