JLabel - 如何隐藏文字?

时间:2011-04-11 13:11:02

标签: java swing hide jlabel

我有一个带有图标和文字的JLabel。是否有可能隐藏只有JLabel的文字?我不想隐藏整个组件(setVisible(false)),而只隐藏文本,因此图标仍然可见。我还想使用getText和setText方法。

感谢您的帮助!

5 个答案:

答案 0 :(得分:3)

这太明显了吗?

label.setText("");

如果您真的只想隐藏它,可以将前景色设置为与背景相同。也许这就足够了(可能有必要防止图标移动,具体取决于你如何设置对齐方式。)

答案 1 :(得分:3)

我也遇到了同样的问题,我的解决方法是简单地使用setName()getName()方法代替setText()getText()方法。希望它会有所帮助。 setToolTipText()的问题是鼠标悬停时会显示工具提示。

答案 2 :(得分:2)

就我而言,没有直接的方法可以做到这一点。但你可以尝试以下一些方法:

  1. 扩展JLabel并覆盖setText()和getText()方法。这些应该将您提供的文本存储在新的String字段中。每次调用setText时,它应该只委托给super.setText()是你的标签 - 文本不是不可见的。然后,您可以添加一个切换可见性的方法。如果使用true调用setTextVisibility(),则该类应使用一串空格调用super.setText()。
  2. 这是我的意思的一个例子:

      public class MyLabel extends JLabel {
        private String labelText;
        private boolean labelTextVisible = true;
    
        private MyLabel( String text, Icon icon, int horizontalAlignment ) {
          super( text, icon, horizontalAlignment );
          labelText = text;
        }
    
        private MyLabel( String text, int horizontalAlignment ) {
          super( text, horizontalAlignment );
          labelText = text;
        }
    
        private MyLabel( String text ) {
          super( text );
          labelText = text;
        }
    
        @Override
        public void setText( String text ) {
          if ( labelTextVisible ) {
            super.setText( text );
          }
          labelText = text;
        }
    
        @Override
        public String getText() {
          return labelText;
        }
    
        public void setLabelTextVisible( boolean labelVisible ){
          if(labelVisible){
            if(!labelText.equals( super.getText() )){
              super.setText( labelText );
            }
          }else{
            int spaceCount = super.getText().length();
            String hiddenText = "";
            for ( int i = 0; i < spaceCount; i++ ) {
              hiddenText+=" ";
            }
            super.setText(hiddenText);
          }
          this.labelTextVisible = labelVisible;
        }
    
        public boolean getLabelTextVisible(){
          return labelTextVisible;
        }
      }
    
    1. (这更像是一个黑客,但它可以工作)使标签的前景色与背景颜色匹配,使文本不再可见。

答案 3 :(得分:0)

我今天刚遇到这个问题。

我的JLabel有一个图标,我只需要显示图标。我有一个MouseListener,为此,我需要标签的文本来唯一标识标签。

我的解决方法是使用setToolTipText()代替setText(),并在MouseListener中使用getToolTipText()代替 getText()

答案 4 :(得分:0)

最简单的方法就是将字体设置为0 !! 试试看。工作正常。

label.setFont(new java.awt.Font("Lucida Grande", 1, 0));