【问题标题】:How to set fix size of jlabel?如何设置jlabel的固定大小?
【发布时间】:2014-05-20 03:30:42
【问题描述】:

我正在尝试制作一个使用多个JLabel 的java 桌面应用程序,我想设置JLabel 的固定高度和宽度。我怎样才能做到这一点?

这是我的代码

public class Second extends JFrame
{
    JPanel panel1,panel2;
    JLabel label=new JLabel();
    ArrayList<JLabel> lbllist = new ArrayList<>();

    public Second()  
    {
        super("Simple Timer");
        {
            getContentPane().setBackground(new java.awt.Color(255,255,255));
        } 
        this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        Container c = getContentPane();
        c.setLayout( new FlowLayout());
        setUndecorated(true);
        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
        setBounds(0,0,screenSize.width, screenSize.height);

        panel2=new JPanel();
        panel2.setBounds(360, 180, 360, 1020);
        panel2.setBackground(new java.awt.Color(255,153,51));
        c.add(panel2);
        JPanel panel3 = createPanel();
        panel1.setLayout(new GridBagLayout());
        panel1.add(panel3);

        JPanel panel4 = createPanel(); 
        panel2.setLayout(new GridBagLayout());
    //  jPanel2.setLayout(null);
        panel2.add(panel4);

        setLayout(null);
   }

   private JPanel createPanel() {
        JPanel panel = new JPanel(new GridLayout(0, 1, 10, 5));
        EmptyBorder panelBorder = new EmptyBorder(10, 5, 10, 10);
        panel.setBorder(panelBorder);
        panel.setBackground(new java.awt.Color(255, 153, 51));
        panel.setOpaque(true);
        EmptyBorder border1 = new EmptyBorder(5, 20, 15, 18);

        Border border = BorderFactory.createLineBorder(Color.BLUE, 2);
        for (int i = 0; i <11; i++) {
            label = new JLabel("<html>Case &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Item&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CaseNum<br><font color=yellow>Party1<br>Party2</font></html>");
            label.setFont(new java.awt.Font("Times New Roman", 1, 18));
            label.setBorder(border);
            label.setSize(300, 100);
            label.setBorder(border1);
            Dimension d = label.getPreferredSize();
            label.setBackground(Color.GRAY);
            label.setForeground(new java.awt.Color(255, 255,255 ));
            label.setOpaque(true);
            lbllist.add(label);
            panel.add(label);
        }
        return panel;
    }

当我从 JLabel 减小文本大小或文本时,JLabel 的大小会减小,但我希望当我从 JLabel 减小或删除任何文本时,但 Jlabel 的大小不应减小它应该修复

我怎样才能得到这个?

提前致谢

【问题讨论】:

标签: java swing jlabel null-layout-manager


【解决方案1】:

您可以通过设置最小、首选和最大尺寸来设置固定尺寸:

setMinimumSize(width, height);
setPreferredSize(width, height);
setMaximumSize(width, height);

作为来自 MadProgrammerLink,您需要重写这些方法,而不是从外部使用它们,基于此link 中提到的原因。

【讨论】:

  • 我将不得不使用所有三个或任何一个
  • 您可以使用setMaximumSize,但我想向您展示API 提供的内容。
  • 明确地说,您想要 JLabel 的宽度或其文本内容的固定大小?
  • 我想修复 j 标签的大小,当我从 jlabel 中删除文本或内容时它不应该减小
  • 那就试试上面的方法吧。
【解决方案2】:

使用JLabel.setPreferredSize(width, height); jpanel没有布局,试试Jpanel pane =new JPanel(new FlowLayout());

【讨论】:

    【解决方案3】:

    如果这个方法不起作用

    setMinimumSize(width, height);
    setPreferredSize(width, height);
    setMaximumSize(width, height);
    

    那就用吧

    setMinimumSize(new Dimension(width, height));
    setPreferredSize(new Dimension(width, height));
    setMaximumSize(new Dimension(width, height));
    

    【讨论】:

      【解决方案4】:

      一个简单的解决方法(不覆盖现有类)是;

      • 专门为组件创建一个JPanel

      • 设置 JPanel 的大小

      • 将组件放置在 JPanel 中

      • 将 JPanel 放置在您最初放置组件的位置

      例如

      JPanel mainPanel = new JPanel(); //Assume this is the panel you are placing things into.
      
      JLabel nameLabel = new JLabel("Name:");
      JPanel nameLabelPanel = new JPanel();
      nameLabelPanel.setPreferredSize(new Dimension(100, 25));
      JPanel.add(nameLabel);
      mainPanel.add(nameLabelPanel);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-05-21
        • 1970-01-01
        • 2014-04-15
        • 1970-01-01
        • 2015-09-07
        相关资源
        最近更新 更多