麻烦将Jlabel的位置与Imageicon设置



我是Java的新手无论图像的大小如何。由于某种原因,我的代码在屏幕中间显示图像,但水平左对齐。

最奇怪的部分是,当我使用一个消息框进行调试时,单击消息框上的确定后,图像移动到了我想要的角落。这只有在我完全无关紧要的行时才能说明绘制图像后的jlabel的界限。

我的代码如下:

    private void OpenWidefieldActionPerformed(java.awt.event.ActionEvent evt) {                                              
    int returnVal = fileChooser.showOpenDialog(this);
    if (returnVal == JFileChooser.APPROVE_OPTION) {
        File file;
        file = fileChooser.getSelectedFile();
        BufferedImage Image1 = null;
        try {
            Image1 = ImageIO.read(file);
        } catch (IOException ex) {
            Logger.getLogger(SMLMFrame.class.getName()).log(Level.SEVERE, null, ex);
        }
        int w = Image1.getWidth();
        int h = Image1.getHeight();
        ImageIcon imgIcon;
        imgIcon = new ImageIcon(Image1);
        jLabel1.setBounds(0, 0, w, h);
        Rectangle r = jLabel1.getBounds();
        jLabel1.setIcon(imgIcon);
        r = jLabel1.getBounds();
        //SMLMFrame.infoBox(r.toString(), "TITLE BAR MESSAGE");
        jLabel1.setBounds(r);

基本上我的主要问题是将jlabel移至角落,但是我实际上对为什么在最后打开Infobox会移动它更感兴趣。

由于某种原因,我的代码在屏幕中间显示图像,但水平左对齐。

Swing使用布局管理器来定位组件。在不知道您正在使用哪个布局管理器的情况下,我们无法说出为什么会发生这种情况。

jLabel1.setBounds(r);

手动设置组件的边界可以暂时更改组件的位置。但是,下次调用布局管理器时,将重置组件的大小/位置。例如,尝试调整帧大小,因为这将导致布局管理器被调用。

因此,解决问题的解决方案是使用适当的布局管理器。也许剩下的简单的FlowLayout

阅读有关布局经理的Swing教程中的部分以获取更多信息。

最新更新