Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 获取JLabel大小_Java_Image_Jlabel - Fatal编程技术网

Java 获取JLabel大小

Java 获取JLabel大小,java,image,jlabel,Java,Image,Jlabel,我试图在JLabel上匹配图像,但无法获得宽度或高度。我认为这是因为jLabel1没有实例化。但我在设计面板上画画。不管怎样,我怎么做 我创建了JFrame,JPanel(jPanel1)和JLabel(jLabel1)。(在netbeans上) 这是我的密码: public class ImageProcessing extends javax.swing.JFrame { Image image; public ImageProcessing() { s

我试图在
JLabel
上匹配图像,但无法获得宽度或高度。我认为这是因为jLabel1没有实例化。但我在设计面板上画画。不管怎样,我怎么做

我创建了
JFrame
JPanel
(jPanel1)和
JLabel
(jLabel1)。(在netbeans上)

这是我的密码:

public class ImageProcessing extends javax.swing.JFrame {

    Image image;

    public ImageProcessing() {

        setSize(640, 480);
        setVisible(true);
        ImageIcon icon = new ImageIcon("D:\\timeline.jpg");
        image = icon.getImage();
        Image newImg = image.getScaledInstance(jLabel1.getHeight(), jLabel1.getWidth(), java.awt.Image.SCALE_SMOOTH);
        ImageIcon i1 = new ImageIcon(newImg);
        jLabel1 = new JLabel(i1);

        getContentPane().add(jLabel1);
}
这应该行得通

import java.awt.Dimension;
import java.awt.Image;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;

public class ImageProcessing extends JFrame {

    private JLabel jLabel1;
    private JPanel jPanel1;

    public ImageProcessing() {

        initComponents();
        ImageIcon icon = new ImageIcon("D:\\timeline.jpg");
        Image scaledInstance = icon.getImage().getScaledInstance(jLabel1.getWidth(), jLabel1.getHeight(), Image.SCALE_SMOOTH);
        ImageIcon scaledIcon = new ImageIcon(scaledInstance);
        jLabel1.setIcon(scaledIcon);

        this.setSize(new Dimension(1024, 768));
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setVisible(true);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {

            @Override
            public void run() {
                new ImageProcessing();
            }
        });
    }

    private void initComponents() {

        jPanel1 = new javax.swing.JPanel();
        jLabel1 = new javax.swing.JLabel();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 604, Short.MAX_VALUE)
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 351, Short.MAX_VALUE)
        );

        jLabel1.setText("Label");

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(139, 139, 139)
                .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 493, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(52, 52, 52)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 226, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap(144, Short.MAX_VALUE))
        );

        pack();
    }// </editor-fold>                        
}
导入java.awt.Dimension;
导入java.awt.Image;
导入javax.swing.ImageIcon;
导入javax.swing.JFrame;
导入javax.swing.JLabel;
导入javax.swing.JPanel;
导入javax.swing.SwingUtilities;
公共类ImageProcessing扩展了JFrame{
私人JLabel jLabel1;
私人JPanel jPanel1;
公共图像处理(){
初始化组件();
ImageIcon图标=新的ImageIcon(“D:\\timeline.jpg”);
Image scaledInstance=icon.getImage().getScaledInstance(jLabel1.getWidth(),jLabel1.getHeight(),Image.SCALE\u平滑);
ImageIcon scaledIcon=新的ImageIcon(缩放状态);
jLabel1.setIcon(scaledIcon);
此.setSize(新尺寸(1024768));
此.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
此.setVisible(true);
}
公共静态void main(字符串[]args){
SwingUtilities.invokeLater(新的Runnable(){
@凌驾
公开募捐{
新图像处理();
}
});
}
私有组件(){
jPanel1=newjavax.swing.JPanel();
jLabel1=newjavax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
javax.swing.GroupLayout jPanel1Layout=新的javax.swing.GroupLayout(jPanel1);
setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0,604,短。最大值)
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0,351,短。最大值)
);
jLabel1.setText(“标签”);
javax.swing.GroupLayout=newjavax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(布局);
layout.setHorizontalGroup(
createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(139、139、139)
.addComponent(jLabel1,javax.swing.GroupLayout.PREFERRED_SIZE,493,javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jPanel1,javax.swing.GroupLayout.PREFERRED\u SIZE,javax.swing.GroupLayout.DEFAULT\u SIZE,javax.swing.GroupLayout.PREFERRED\u SIZE)
.addContainerGap(javax.swing.GroupLayout.DEFAULT\u SIZE,Short.MAX\u VALUE))
);
layout.setVerticalGroup(
createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(52,52,52)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.training)
.addComponent(jLabel1,javax.swing.GroupLayout.PREFERRED_SIZE,226,javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jPanel1、javax.swing.GroupLayout.PREFERRED\u SIZE、javax.swing.GroupLayout.DEFAULT\u SIZE、javax.swing.GroupLayout.PREFERRED\u SIZE))
.addContainerGap(144,简称最大值))
);
包装();
}//                         
}

如果未实例化“jLabel1”,则会导致空指针异常。也许记录“getHeight”和“getWidth”方法调用的返回值,以确认其高度和宽度。调试的关键是缩小问题的范围并对其进行分区。打印(或以其他方式查找)这些方法返回的值将有助于划分设置的高度和宽度是否存在问题,或者您如何使用这些返回的值。我看到了,但我想知道,我可以在“设计”选项卡中调整jLabel1的大小,并且我看到了属性,例如(226x200)。但为什么我不能从“源”选项卡中获取此大小?是的,我理解我的问题,我删除了initComponents();但是我写了它,我可以达到宽度或高度,但是现在这个图像没有出现在JFrame上。你的意思是,你可以在用
new JLabel(i1)
?@user3005212调用构造函数后得到这个jLabel1的大小。因此,下次最好添加更多的代码,因为我们可以帮助你解决问题,但是,如果您在代码的其他部分遇到更多问题,我们将无法帮助您解决此问题;)是的,你是对的,但除了从netbeans创建的代码之外,我没有其他代码。