有没有办法在java swing中显示没有JLabel或JTextField的文本?

时间:2013-12-26 14:47:37

标签: java swing jtextfield

我正在创建Swing项目,但我想知道是否有任何方法可以在不使用JLabelJTextField的情况下打印文本。

我发现文本字段可能是一个但不像JLabel那样整洁。 (文本周围有边框)。

可以删除文本字段中的边框吗?或者我可以使用其他方法吗?

3 个答案:

答案 0 :(得分:1)

您似乎在寻找JComponent.setBorder(null)。然而,有很多方法可以达到你想要的效果..

  1. 具有BG颜色的不透明JLabel
  2. 自定义绘制的组件..
  3. 以下是两个标准组件的示例。

    enter image description here

    import java.awt.*;
    import javax.swing.*;
    
    class TextFieldNoBorder {
    
        public static void main(String[] args) {
            Runnable r = new Runnable() {
                @Override
                public void run() {
                    String s = "Text without borders..";
                    JPanel gui = new JPanel(new GridLayout(0,1,5,5));
    
                    JTextField tf = new JTextField(s, 20);
                    tf.setBorder(null);
    
                    gui.add(tf);
    
                    JLabel l = new JLabel(s);
                    l.setOpaque(true);
                    l.setBackground(Color.YELLOW);
                    gui.add(l);
    
                    JOptionPane.showMessageDialog(null, gui);
                }
            };
            // Swing GUIs should be created and updated on the EDT
            // http://docs.oracle.com/javase/tutorial/uiswing/concurrency
            SwingUtilities.invokeLater(r);
        }
    }
    

答案 1 :(得分:1)

  

“我想知道是否有办法在不使用JLable或JtextField的情况下打印文本”

您始终可以在JPanel中绘制文本。需要做更多的工作,但你可以用你的文字做更多的事情。

public class TextPanel extends JPanel{
    protected void paintComponent(Graphics g){
        super.paintComponent(g);
        g.drawString("Hello, Stackoverflow!", xLocation, yLocation);
    }
}

请参阅Drawing Text with Graphics

答案 2 :(得分:0)

你可以用它!

JTextField textField = new JTextField();
textField.setBorder(javax.swing.BorderFactory.createEmptyBorder());

这会将空边框设置为TextField