【问题标题】:swing - JLabel in GridBagLayout with long textswing - GridBagLayout 中带有长文本的 JLabel
【发布时间】:2017-06-18 16:34:41
【问题描述】:

我正在尝试设计一个弹出窗口来通知收到一封新电子邮件。 这是代码:

import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import javax.swing.ImageIcon;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

/**
 *
 * @author luca
 */
public class Popup extends JDialog {


    public Popup() {
        super.setSize(260, 100);

        this.setLayout(new GridBagLayout());
        GridBagConstraints gbc = new GridBagConstraints();

        gbc.insets = new Insets(5, 5, 5, 5);


        JLabel header = new JLabel("Hai ricevuto una nuova email");
        gbc.gridx = 1;
        gbc.gridy = 0;
        gbc.gridheight = 1;
        gbc.anchor = GridBagConstraints.WEST;
        add(header, gbc);

        JLabel mittente = new JLabel("luca.cillario@yahoo.it");
        gbc.gridx = 1;
        gbc.gridy = 1;
        gbc.gridheight = 1;
        add(mittente, gbc);

        JLabel argomento = new JLabel("info voto esame");
        gbc.gridx = 1;
        gbc.gridy = 2;
        gbc.gridheight = 1;
        add(argomento, gbc);

        JLabel icona = new JLabel(new ImageIcon("img/email.png"));
        gbc.gridx = 0;
        gbc.gridy = 0;
        gbc.gridheight = 3;
        gbc.fill = GridBagConstraints.BOTH;
        add(icona, gbc);


        this.setLocation(400, 400);
        this.setUndecorated(true);
        this.setVisible(true);
        mittente.setMaximumSize(new Dimension(180, 16));
    }

    public static void main(String args[]){
        new Popup();
    }

}

当标签中的文本不是太长时,一切正常,我得到这样的东西:

但是当文本太长时,这就是我得到的:

有没有办法得到这样的东西?

我发现了关于这件事的其他问题,我尝试处理 label.setMaximumSize(),我尝试使用 html 标签编写文本……但没有任何结果。有人可以帮我吗?

【问题讨论】:

    标签: java swing jlabel layout-manager gridbaglayout


    【解决方案1】:

    在这种情况下,将图像的weightx 设置为 1 会有所帮助,而其他所有内容都设置为 0。还有各种其他更改。仔细检查代码是否有更改。

    我还建议将全文设置为每个标签的工具提示。如果用户想查看全部细节,只需将鼠标指向标签即可。

    import java.awt.*;
    import java.awt.image.*;
    import javax.swing.*;
    
    public class Popup extends JDialog {
    
        public Popup() {
            this.setLayout(new GridBagLayout());
            GridBagConstraints gbc = new GridBagConstraints();
    
            gbc.insets = new Insets(5, 5, 5, 5);
    
            JLabel header = new JLabel("Hai ricevuto una nuova email");
            gbc.gridx = 1;
            gbc.gridy = 0;
            gbc.gridheight = 1;
            gbc.weightx = 1;
            gbc.anchor = GridBagConstraints.WEST;
            add(header, gbc);
    
            gbc.weightx = 0;
            JLabel mittente = new JLabel("luca.cillario@yahoo.itabcditabcditabcditabcditabcd");
            gbc.gridx = 1;
            gbc.gridy = 1;
            gbc.gridheight = 1;
            add(mittente, gbc);
    
            JLabel argomento = new JLabel("info voto esame");
            gbc.gridx = 1;
            gbc.gridy = 2;
            gbc.gridheight = 1;
            add(argomento, gbc);
    
            JLabel icona = new JLabel(new ImageIcon(
                    new BufferedImage(40,60,BufferedImage.TYPE_INT_RGB)));
            gbc.gridx = 0;
            gbc.gridy = 0;
            gbc.gridheight = 3;
            gbc.fill = GridBagConstraints.BOTH;
            add(icona, gbc);
    
            this.setLocation(400, 400);
            this.setUndecorated(true);
            pack();
            super.setSize(260, 100);
            this.setVisible(true);
            mittente.setMaximumSize(new Dimension(180, 16));
        }
    
        public static void main(String args[]) {
            new Popup();
        }
    }
    

    【讨论】:

    • 非常感谢,这正是我想要的!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-28
    • 2015-12-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多