Extending JLabel in Java Swing to use a given font (super usage in extended classes)












0















I am trying to create a new class JXLabel which inherits JLabel. Difference is that this extended class will assign a default font for the label.



If I try this:



public class JXLabel extends JLabel {

Font f = new Font("Segoe UI", Font.PLAIN, 6);

public JXLabel() {
super();
this.setFont(f);
}

public JXLabel(Icon icon) {
super(icon);
this.setFont(f);
}

public JXLabel(Icon icon, int horizontalAlignment) {
super(icon, horizontalAlignment);
this.setFont(f);
}

public JXLabel(String text) {
super(text);
this.setFont(f);
}

public JXLabel(String text, Icon icon, int horizontalAlignment) {
super(text, icon, horizontalAlignment);
this.setFont(f);
}

public JXLabel(String text, int horizontalAlignment) {
super(text, horizontalAlignment);
this.setFont(f);
}
}


I would expect new labels created as JXLabel to have this default font, but they do not.



If I create a regular JLabel and do:



myLabel.setFont(new Font("Segoe UI", Font.PLAIN, 6));


It works. Any tip on what is wrong in the extended class? Thanks.










share|improve this question

























  • For better help sooner, edit to add a Minimal, Complete, and Verifiable example or Short, Self Contained, Correct Example.

    – Andrew Thompson
    Nov 24 '18 at 5:36
















0















I am trying to create a new class JXLabel which inherits JLabel. Difference is that this extended class will assign a default font for the label.



If I try this:



public class JXLabel extends JLabel {

Font f = new Font("Segoe UI", Font.PLAIN, 6);

public JXLabel() {
super();
this.setFont(f);
}

public JXLabel(Icon icon) {
super(icon);
this.setFont(f);
}

public JXLabel(Icon icon, int horizontalAlignment) {
super(icon, horizontalAlignment);
this.setFont(f);
}

public JXLabel(String text) {
super(text);
this.setFont(f);
}

public JXLabel(String text, Icon icon, int horizontalAlignment) {
super(text, icon, horizontalAlignment);
this.setFont(f);
}

public JXLabel(String text, int horizontalAlignment) {
super(text, horizontalAlignment);
this.setFont(f);
}
}


I would expect new labels created as JXLabel to have this default font, but they do not.



If I create a regular JLabel and do:



myLabel.setFont(new Font("Segoe UI", Font.PLAIN, 6));


It works. Any tip on what is wrong in the extended class? Thanks.










share|improve this question

























  • For better help sooner, edit to add a Minimal, Complete, and Verifiable example or Short, Self Contained, Correct Example.

    – Andrew Thompson
    Nov 24 '18 at 5:36














0












0








0








I am trying to create a new class JXLabel which inherits JLabel. Difference is that this extended class will assign a default font for the label.



If I try this:



public class JXLabel extends JLabel {

Font f = new Font("Segoe UI", Font.PLAIN, 6);

public JXLabel() {
super();
this.setFont(f);
}

public JXLabel(Icon icon) {
super(icon);
this.setFont(f);
}

public JXLabel(Icon icon, int horizontalAlignment) {
super(icon, horizontalAlignment);
this.setFont(f);
}

public JXLabel(String text) {
super(text);
this.setFont(f);
}

public JXLabel(String text, Icon icon, int horizontalAlignment) {
super(text, icon, horizontalAlignment);
this.setFont(f);
}

public JXLabel(String text, int horizontalAlignment) {
super(text, horizontalAlignment);
this.setFont(f);
}
}


I would expect new labels created as JXLabel to have this default font, but they do not.



If I create a regular JLabel and do:



myLabel.setFont(new Font("Segoe UI", Font.PLAIN, 6));


It works. Any tip on what is wrong in the extended class? Thanks.










share|improve this question
















I am trying to create a new class JXLabel which inherits JLabel. Difference is that this extended class will assign a default font for the label.



If I try this:



public class JXLabel extends JLabel {

Font f = new Font("Segoe UI", Font.PLAIN, 6);

public JXLabel() {
super();
this.setFont(f);
}

public JXLabel(Icon icon) {
super(icon);
this.setFont(f);
}

public JXLabel(Icon icon, int horizontalAlignment) {
super(icon, horizontalAlignment);
this.setFont(f);
}

public JXLabel(String text) {
super(text);
this.setFont(f);
}

public JXLabel(String text, Icon icon, int horizontalAlignment) {
super(text, icon, horizontalAlignment);
this.setFont(f);
}

public JXLabel(String text, int horizontalAlignment) {
super(text, horizontalAlignment);
this.setFont(f);
}
}


I would expect new labels created as JXLabel to have this default font, but they do not.



If I create a regular JLabel and do:



myLabel.setFont(new Font("Segoe UI", Font.PLAIN, 6));


It works. Any tip on what is wrong in the extended class? Thanks.







java swing fonts jlabel






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 24 '18 at 5:31









Andrew Thompson

153k27163338




153k27163338










asked Nov 24 '18 at 5:15









M.E.M.E.

1,092628




1,092628













  • For better help sooner, edit to add a Minimal, Complete, and Verifiable example or Short, Self Contained, Correct Example.

    – Andrew Thompson
    Nov 24 '18 at 5:36



















  • For better help sooner, edit to add a Minimal, Complete, and Verifiable example or Short, Self Contained, Correct Example.

    – Andrew Thompson
    Nov 24 '18 at 5:36

















For better help sooner, edit to add a Minimal, Complete, and Verifiable example or Short, Self Contained, Correct Example.

– Andrew Thompson
Nov 24 '18 at 5:36





For better help sooner, edit to add a Minimal, Complete, and Verifiable example or Short, Self Contained, Correct Example.

– Andrew Thompson
Nov 24 '18 at 5:36












1 Answer
1






active

oldest

votes


















1














Here is a MCVE of the above code, testing the assertion that one way it works, while the other it doesn't. Here, it works by either setting the font of a standard JLabel or by using a JXLabel.



See if you can:




  1. Confirm the result on your machine

  2. If it works as expected, track down the difference in the original code.




import java.awt.*;
import javax.swing.*;

public class JXLabelTest {

public static void main(String args) {
Runnable r = () -> {
String s = "The quick brown fox jumps over the lazy dog";
JLabel myLabel = new JLabel(s);
myLabel.setFont(new Font("Segoe UI", Font.PLAIN, 6));
JOptionPane.showMessageDialog(null, myLabel);
JOptionPane.showMessageDialog(null, new JXLabel(s));
};
SwingUtilities.invokeLater(r);
}
}

class JXLabel extends JLabel {

Font f = new Font("Segoe UI", Font.PLAIN, 6);

public JXLabel() {
super();
this.setFont(f);
}

public JXLabel(Icon icon) {
super(icon);
this.setFont(f);
}

public JXLabel(Icon icon, int horizontalAlignment) {
super(icon, horizontalAlignment);
this.setFont(f);
}

public JXLabel(String text) {
super(text);
this.setFont(f);
}

public JXLabel(String text, Icon icon, int horizontalAlignment) {
super(text, icon, horizontalAlignment);
this.setFont(f);
}

public JXLabel(String text, int horizontalAlignment) {
super(text, horizontalAlignment);
this.setFont(f);
}
}





share|improve this answer





















  • 1





    This works and helped me to locate the issue.

    – M.E.
    Nov 26 '18 at 14:30











Your Answer






StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");

StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});

function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});


}
});














draft saved

draft discarded


















StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53455375%2fextending-jlabel-in-java-swing-to-use-a-given-font-super-usage-in-extended-clas%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown

























1 Answer
1






active

oldest

votes








1 Answer
1






active

oldest

votes









active

oldest

votes






active

oldest

votes









1














Here is a MCVE of the above code, testing the assertion that one way it works, while the other it doesn't. Here, it works by either setting the font of a standard JLabel or by using a JXLabel.



See if you can:




  1. Confirm the result on your machine

  2. If it works as expected, track down the difference in the original code.




import java.awt.*;
import javax.swing.*;

public class JXLabelTest {

public static void main(String args) {
Runnable r = () -> {
String s = "The quick brown fox jumps over the lazy dog";
JLabel myLabel = new JLabel(s);
myLabel.setFont(new Font("Segoe UI", Font.PLAIN, 6));
JOptionPane.showMessageDialog(null, myLabel);
JOptionPane.showMessageDialog(null, new JXLabel(s));
};
SwingUtilities.invokeLater(r);
}
}

class JXLabel extends JLabel {

Font f = new Font("Segoe UI", Font.PLAIN, 6);

public JXLabel() {
super();
this.setFont(f);
}

public JXLabel(Icon icon) {
super(icon);
this.setFont(f);
}

public JXLabel(Icon icon, int horizontalAlignment) {
super(icon, horizontalAlignment);
this.setFont(f);
}

public JXLabel(String text) {
super(text);
this.setFont(f);
}

public JXLabel(String text, Icon icon, int horizontalAlignment) {
super(text, icon, horizontalAlignment);
this.setFont(f);
}

public JXLabel(String text, int horizontalAlignment) {
super(text, horizontalAlignment);
this.setFont(f);
}
}





share|improve this answer





















  • 1





    This works and helped me to locate the issue.

    – M.E.
    Nov 26 '18 at 14:30
















1














Here is a MCVE of the above code, testing the assertion that one way it works, while the other it doesn't. Here, it works by either setting the font of a standard JLabel or by using a JXLabel.



See if you can:




  1. Confirm the result on your machine

  2. If it works as expected, track down the difference in the original code.




import java.awt.*;
import javax.swing.*;

public class JXLabelTest {

public static void main(String args) {
Runnable r = () -> {
String s = "The quick brown fox jumps over the lazy dog";
JLabel myLabel = new JLabel(s);
myLabel.setFont(new Font("Segoe UI", Font.PLAIN, 6));
JOptionPane.showMessageDialog(null, myLabel);
JOptionPane.showMessageDialog(null, new JXLabel(s));
};
SwingUtilities.invokeLater(r);
}
}

class JXLabel extends JLabel {

Font f = new Font("Segoe UI", Font.PLAIN, 6);

public JXLabel() {
super();
this.setFont(f);
}

public JXLabel(Icon icon) {
super(icon);
this.setFont(f);
}

public JXLabel(Icon icon, int horizontalAlignment) {
super(icon, horizontalAlignment);
this.setFont(f);
}

public JXLabel(String text) {
super(text);
this.setFont(f);
}

public JXLabel(String text, Icon icon, int horizontalAlignment) {
super(text, icon, horizontalAlignment);
this.setFont(f);
}

public JXLabel(String text, int horizontalAlignment) {
super(text, horizontalAlignment);
this.setFont(f);
}
}





share|improve this answer





















  • 1





    This works and helped me to locate the issue.

    – M.E.
    Nov 26 '18 at 14:30














1












1








1







Here is a MCVE of the above code, testing the assertion that one way it works, while the other it doesn't. Here, it works by either setting the font of a standard JLabel or by using a JXLabel.



See if you can:




  1. Confirm the result on your machine

  2. If it works as expected, track down the difference in the original code.




import java.awt.*;
import javax.swing.*;

public class JXLabelTest {

public static void main(String args) {
Runnable r = () -> {
String s = "The quick brown fox jumps over the lazy dog";
JLabel myLabel = new JLabel(s);
myLabel.setFont(new Font("Segoe UI", Font.PLAIN, 6));
JOptionPane.showMessageDialog(null, myLabel);
JOptionPane.showMessageDialog(null, new JXLabel(s));
};
SwingUtilities.invokeLater(r);
}
}

class JXLabel extends JLabel {

Font f = new Font("Segoe UI", Font.PLAIN, 6);

public JXLabel() {
super();
this.setFont(f);
}

public JXLabel(Icon icon) {
super(icon);
this.setFont(f);
}

public JXLabel(Icon icon, int horizontalAlignment) {
super(icon, horizontalAlignment);
this.setFont(f);
}

public JXLabel(String text) {
super(text);
this.setFont(f);
}

public JXLabel(String text, Icon icon, int horizontalAlignment) {
super(text, icon, horizontalAlignment);
this.setFont(f);
}

public JXLabel(String text, int horizontalAlignment) {
super(text, horizontalAlignment);
this.setFont(f);
}
}





share|improve this answer















Here is a MCVE of the above code, testing the assertion that one way it works, while the other it doesn't. Here, it works by either setting the font of a standard JLabel or by using a JXLabel.



See if you can:




  1. Confirm the result on your machine

  2. If it works as expected, track down the difference in the original code.




import java.awt.*;
import javax.swing.*;

public class JXLabelTest {

public static void main(String args) {
Runnable r = () -> {
String s = "The quick brown fox jumps over the lazy dog";
JLabel myLabel = new JLabel(s);
myLabel.setFont(new Font("Segoe UI", Font.PLAIN, 6));
JOptionPane.showMessageDialog(null, myLabel);
JOptionPane.showMessageDialog(null, new JXLabel(s));
};
SwingUtilities.invokeLater(r);
}
}

class JXLabel extends JLabel {

Font f = new Font("Segoe UI", Font.PLAIN, 6);

public JXLabel() {
super();
this.setFont(f);
}

public JXLabel(Icon icon) {
super(icon);
this.setFont(f);
}

public JXLabel(Icon icon, int horizontalAlignment) {
super(icon, horizontalAlignment);
this.setFont(f);
}

public JXLabel(String text) {
super(text);
this.setFont(f);
}

public JXLabel(String text, Icon icon, int horizontalAlignment) {
super(text, icon, horizontalAlignment);
this.setFont(f);
}

public JXLabel(String text, int horizontalAlignment) {
super(text, horizontalAlignment);
this.setFont(f);
}
}






share|improve this answer














share|improve this answer



share|improve this answer








edited Nov 26 '18 at 14:41

























answered Nov 24 '18 at 5:35









Andrew ThompsonAndrew Thompson

153k27163338




153k27163338








  • 1





    This works and helped me to locate the issue.

    – M.E.
    Nov 26 '18 at 14:30














  • 1





    This works and helped me to locate the issue.

    – M.E.
    Nov 26 '18 at 14:30








1




1





This works and helped me to locate the issue.

– M.E.
Nov 26 '18 at 14:30





This works and helped me to locate the issue.

– M.E.
Nov 26 '18 at 14:30


















draft saved

draft discarded




















































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.




draft saved


draft discarded














StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53455375%2fextending-jlabel-in-java-swing-to-use-a-given-font-super-usage-in-extended-clas%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

Contact image not getting when fetch all contact list from iPhone by CNContact

Insert data from modal to MySQL (multiple modal on website)

count number of partitions of a set with n elements into k subsets