我试图将图像添加到JLabel,我遇到了一个问题,即JLabel的图像很大,所以我正在寻找一种方法使图像自动缩放到JLabel的大小。
这是我调用GUImain类的代码主体:
public class Main
{
public static void main(String[] args)
{
int i = 0;
int t = 0;
int st = 0;
int h = 0;
Texts textObject = new Texts();
textObject.TextList();
Commands commandObject = new Commands();
commandObject.commands();
GUImain guiObject = new GUImain();
guiObject.displayGUI();
}
}
这是我的GUImain类的代码,我只会包含一个图像按钮,因为我的代码中有很多对象。
import java.awt.EventQueue;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.image.BufferedImage;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.JList;
import javax.swing.JTextPane;
import javax.swing.JLabel;
import javax.swing.JTextArea;
import javax.swing.JScrollBar;
import javax.swing.JTextField;
import javax.swing.JPanel;
import javax.swing.border.TitledBorder;
public class GUImain
{
private JFrame frame;
private JTextField textField;
private ImageIcon image1;
public void displayGUI()
{
this.frame.setVisible(true);
}
//Launch the application.
public static void main(String[] args)
{
GUImain window = new GUImain();
}
//Create the application.
public GUImain()
{
frame = new JFrame();
frame.setBounds(100, 100, 611, 471);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);
...
JLabel lblHunger = new JLabel();
Image img2 = new ImageIcon(this.getClass().getResource("/Food.png")).getImage();
lblHunger.setIcon(new ImageIcon(img2));
lblHunger.setBounds(211, 58, 50, 50);
panel.add(lblHunger);
}
}
}
答案 0 :(得分:2)
不要使用空布局!!!
Swing旨在与布局管理器一起使用。让每个组件确定其首选大小,然后让布局管理器根据布局管理器的规则调整组件的大小和位置。
您可以使用Darry'ls Stretch Icon而不是自定义绘画。图标将根据图标可用空间绘制。
我遇到了一个问题,即JLabel的图像很大
重读这部分问题。在这种情况下,您可能希望使用Image.getScaledInstance(...)
方法将图像缩放到适当的大小。您可以使用常规Icon和相应的布局管理器。
我可以使用哪种布局轻松选择尺寸和物体的位置
您不应该选择组件的大小/位置。这是布局管理器的工作。阅读Layout Managers上的教程,并选择适合您要求的一个(或布局管理器组合)。