Java 显示图标
我试图使用grouplayout和Jlabel在java项目中显示一组图标,但问题是,当我运行项目时,我得到了这个图标 我想这样显示它,我还需要最小化图标。Java 显示图标,java,swing,Java,Swing,我试图使用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.s
这是我的密码:
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);
});
}
}
不要使用组布局。这是一种更复杂的使用方法,如果使用了错误的约束,则会得到错误的结果 相反,使用包装在面板中的
GridLayout
来保留图标的大小:
比如:
JPanel labelPanel = new JPanel( new GridLayout(0, 5) );
labelPanel.add(label1);
labelPanel.add(label2);
...
JPanel wrapper = new JPanel(); // defaults to FlowLayout
wrapper.add( iconPanel );
frame.add( wrapper );
我还需要最小化图标
不确定这意味着什么,但如果要更改需要使用
ImageIO
读取每个图像的大小,然后可以使用image.getScaledInstance(…)
方法调整图像大小。然后使用缩放图像创建图像图标。不清楚要更改什么。问题是使用了错误的图像吗?