【问题标题】:write a string on a jpanel centered在居中的 jpanel 上写一个字符串
【发布时间】:2012-07-11 08:31:39
【问题描述】:

我会在 JPanel 上写一个比其他元素更尊重的字符串。这可能是简单地绘制字符串的方法吗?有一种方法可以做到这一点吗?

【问题讨论】:

    标签: java swing fonts jpanel


    【解决方案1】:

    您可以将文本添加为​​ JLabel 组件并更改其字体大小。

    public static void main(String[] args) {
        NewJFrame1 frame = new NewJFrame1();
        frame.setLayout(new GridBagLayout());
        JPanel panel = new JPanel();
        JLabel jlabel = new JLabel("This is a label");
        jlabel.setFont(new Font("Verdana",1,20));
        panel.add(jlabel);
        panel.setBorder(new LineBorder(Color.BLACK)); // make it easy to see
        frame.add(panel, new GridBagConstraints());
        frame.setSize(400, 400);
        frame.setLocationRelativeTo(null);
        frame.setDefaultCloseOperation(NewJFrame1.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }
    

    代码将运行并如下所示:

    另请参阅Java layout manager vertical center 了解更多信息

    【讨论】:

    • 这依赖于(幸运的是)new GridBagConstraints() 的默认属性。这将如何与其他组件一起使用?其他布局?
    【解决方案2】:

    JLabel 支持 HTML 3.2 格式,因此如果您不想弄乱字体,可以使用 header 标签。

    import java.awt.BorderLayout;
    import java.awt.Component;
    import java.awt.Container;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import javax.swing.*;
    
    
    public class HtmlHeadersSample extends JFrame {
    
        public HtmlHeadersSample() {
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setSize(300,200);
        setLocation(100, 100);
        JLabel label1 = new JLabel();
        label1.setText("simple text");
        label1.setBounds(0, 0, 200, 50);
        JLabel label2 = new JLabel();
        label2.setText("<html><h1>header1 text</h1></html>");
        label2.setBounds(0, 20, 200, 50);
        JLabel label3 = new JLabel();
        label3.setText("<html><h2>header2 text</h2></html>");
        label3.setBounds(0, 40, 200, 50);
        JLabel label4 = new JLabel();
        label4.setText("<html><h3>header3 text</h3></html>");
        label4.setBounds(0, 60, 200, 50);
    
        add(label1);
        add(label2);
        add(label3);
        add(label4);
    
        setVisible(true);
        }
    
        public static void main(String[] args) {
            new HtmlHeadersSample();
    
        }
    
    }
    

    它是这样的:

    【讨论】:

      【解决方案3】:

      只需设置字体大小

          JLabel bigLabel = new JLabel("Bigger text");
          bigLabel.setFont(new Font("Arial", 0, 30));
      

      【讨论】:

      • 默认的horizontalAlignmentLEADING,可以和默认的FlowLayout一起使用。还可以考虑按姓氏指定字体,例如Font.SANS_SERIF.
      猜你喜欢
      • 1970-01-01
      • 2018-04-20
      • 2011-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-28
      • 1970-01-01
      相关资源
      最近更新 更多