显示图标

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了显示图标相关的知识,希望对你有一定的参考价值。

我正在尝试使用grouplayout和Jlabel在Java项目中显示一组图标,但是问题是,当我运行项目时,得到了这个”结果“

而且我想这样显示它,并且我还需要最小化图标。“期望的结果”

这是我的代码:

import java.awt.Container;
import java.awt.EventQueue;
import javax.swing.GroupLayout;
import javax.swing.ImageIcon;
import javax.swing.JComponent;
import javax.swing.JFrame;
import static javax.swing.JFrame.EXIT_ON_CLOSE;
import javax.swing.JLabel;

public class ImageIconLabelEx extends JFrame 

    public ImageIconLabelEx() 

        initUI();
    

    private void initUI() 

        JLabel lbl1 = new JLabel(new ImageIcon("imgs/Empty.png"));
        JLabel lbl2 = new JLabel(new ImageIcon("imgs/Empty.png"));
        JLabel lbl3 = new JLabel(new ImageIcon("imgs/Empty.png"));
        JLabel lbl4 = new JLabel(new ImageIcon("imgs/Empty.png"));
        JLabel lbl5 = new JLabel(new ImageIcon("imgs/Empty.png"));
        JLabel lbl6 = new JLabel(new ImageIcon("imgs/Empty.png"));
        JLabel lbl7 = new JLabel(new ImageIcon("imgs/Full.png"));
        JLabel lbl8 = new JLabel(new ImageIcon("imgs/Full.png"));
        JLabel lbl9 = new JLabel(new ImageIcon("imgs/Full.png"));
        JLabel lbl10 = new JLabel(new ImageIcon("imgs/Full.png"));

        createLayout(lbl1, lbl2, lbl3, lbl4, lbl5, lbl6, lbl7, lbl8, lbl9,lbl10 );


        setTitle("Icons");
        setLocationRelativeTo(null);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
    

    private void createLayout(JComponent... arg) 

        Container pane = getContentPane();
        GroupLayout gl = new GroupLayout(pane);
        pane.setLayout(gl);        

        gl.setAutoCreateContainerGaps(false);
        gl.setAutoCreateGaps(true);

        gl.setHorizontalGroup(gl.createSequentialGroup()
                .addComponent(arg[0])
                .addComponent(arg[1])
                .addComponent(arg[2])
                .addComponent(arg[3])
                .addComponent(arg[4])
                .addComponent(arg[5])
                .addComponent(arg[6])
                .addComponent(arg[7])
                .addComponent(arg[8])
                .addComponent(arg[9])

        );

        gl.setVerticalGroup(gl.createParallelGroup()
                .addComponent(arg[0])
                .addComponent(arg[1])
                .addComponent(arg[2])
                .addComponent(arg[3])
                .addComponent(arg[4])
                .addComponent(arg[5])
                .addComponent(arg[6])
                .addComponent(arg[7])
                .addComponent(arg[8])
                .addComponent(arg[9])

        );

        pack();
        

    public static void main(String[] args) 

        EventQueue.invokeLater(() -> 
            ImageIconLabelEx ex = new ImageIconLabelEx();
            ex.setVisible(true);
        );
    

答案

不要使用GroupLayout。这是使用起来比较复杂的方法之一,如果使用错误的约束条件,则会得到不正确的结果。

相反,使用包裹在面板中的GridLayout来保留图标的大小:

类似:

JPanel iconPanel = new JPanel( new GridLayout(0, 5) );
iconPanel.add(icon1);
iconPanel.add(icons2);
...
JPanel wrapper = new JPanel(); // defaults to FlowLayout
wrapper.add( iconPanel );
frame.add( wrapper );

以上是关于显示图标的主要内容,如果未能解决你的问题,请参考以下文章

powerpoint中可输入文本的工具

蜂巢表在显示数据时显示空输出

在 Notepad++ 中智能突出显示时显示出现次数

OpenGL在显示多个对象时显示白屏

本地通知在后台显示应用程序时显示 uialertview

如何显示选定的 html 多种颜色并推入数组并显示它?颜色在附加时显示多次