繁体   English   中英

如何在另一个 JPanel 中显示图像 JPanel

[英]how can i display image JPanel in another JPanel

这是我想要做的是一个带有 JLabel 和 JField 的 JPanel 类,以及一个带有在其中插入图像选项的 JPanel 类,但是当我单独运行 StdPoto 类时,它可以很好地打开 JFileChooser 并在 JPanel 上显示图像,但是当我在测试类中运行它时,测试类只显示 StudentData 类的组件并且缺少 StdPhoto

未出现在测试班中的照片面板

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JFileChooser;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.border.BevelBorder;
import javax.swing.filechooser.FileNameExtensionFilter;
import java.io.File;

public class StdPhoto extends JPanel {

    JLabel imageLabel = null;
    Icon stImage = null;
    JFileChooser fileChooser = null;
    FileNameExtensionFilter filter = null;
    File fChoose = null;

    public StdPhoto() {
        setLayout(new BorderLayout());
        fileChooser = new JFileChooser();
        filter = new FileNameExtensionFilter("Image Files", "jpg", "png", "gif", "jpeg");
        fileChooser.setFileFilter(filter);
        addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
                int result = fileChooser.showOpenDialog(null);
                if(result == JFileChooser.APPROVE_OPTION)
                    fChoose = fileChooser.getSelectedFile();
                String sName = fChoose.getAbsolutePath();
                stImage = new ImageIcon(sName);
                imageLabel = new JLabel("", stImage, JLabel.CENTER);                
                add(imageLabel, BorderLayout.CENTER);
                setPreferredSize(new Dimension(100, 100));
            }
        });
    }
}

在测试类中工作正常的类

import java.awt.Font;
import java.awt.GridBagConstraints;

import java.awt.GridBagLayout;
import java.awt.Insets;
import java.util.ArrayList;
import java.util.Date;

import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingConstants;

public class StudentData extends JPanel {

    /**
     * Create the panel.
     */


    public StudentData() {

        GridBagLayout gbLayout = new GridBagLayout();
        setLayout(gbLayout);
        GridBagConstraints gbc = new GridBagConstraints();

        gbc.fill = GridBagConstraints.HORIZONTAL;
        gbc.gridx = 0;
        gbc.gridy = 0;
        gbc.gridheight = 1;
        gbc.gridwidth = 10;
        gbc.weightx = 0.2;
        JLabel stNameLabel = new JLabel("Student Name", SwingConstants.LEFT);
        stNameLabel.setFont(new Font("Calibri", Font.PLAIN, 14));
        gbLayout.setConstraints(stNameLabel, gbc);
        add(stNameLabel);

        gbc.gridx = 1;
        gbc.gridy = 0;
        gbc.gridheight = 1;
        gbc.gridwidth = 5;
        JTextField stNameField = new JTextField(15);
        stNameField.setFont(new Font("Calibri", Font.PLAIN, 14));
        gbLayout.setConstraints(stNameField, gbc);
        add(stNameField);

        gbc.gridx = 0;
        gbc.gridy = 1;
        gbc.gridheight = 1;
        gbc.gridwidth = 5;
        JLabel fNameLabel = new JLabel("Father Name", SwingConstants.LEFT);
        fNameLabel.setFont(new Font("Calibri", Font.PLAIN, 14));
        gbLayout.setConstraints(fNameLabel, gbc);
        add(fNameLabel);

        gbc.gridx = 1;
        gbc.gridy = 1;
        gbc.gridheight = 1;
        gbc.gridwidth = 1;
        JTextField fNameField = new JTextField(15);
        fNameField.setFont(new Font("Calibri", Font.PLAIN, 14));
        gbLayout.setConstraints(fNameField, gbc);
        add(fNameField);


        gbc.gridx = 0;
        gbc.gridy = 3;
        JLabel pAddress = new JLabel("Permenant Address", SwingConstants.LEFT);
        pAddress.setFont(new Font("Calibri", Font.PLAIN, 14));
        gbLayout.setConstraints(pAddress, gbc);
        add(pAddress);

        gbc.gridx = 1;
        gbc.gridy = 3;
        JTextField pAddressField = new JTextField(15);
        pAddressField.setFont(new Font("Calibri", Font.PLAIN, 14));
        gbLayout.setConstraints(pAddressField, gbc);
        add(pAddressField);


        gbc.gridx = 0;
        gbc.gridy = 4;
        JLabel contactNo = new JLabel("Mobile No.", SwingConstants.LEFT);
        contactNo.setFont(new Font("Calibri", Font.PLAIN, 14));
        gbLayout.setConstraints(contactNo, gbc);
        add(contactNo);

        gbc.gridx = 1;
        JTextField contactNoField = new JTextField(15);
        contactNoField.setFont(new Font("Calibri", Font.PLAIN, 14));
        gbLayout.setConstraints(contactNoField, gbc);
        add(contactNoField);

    }

}

我将两个框架放在一起的测试类

import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;

public class Testing extends JFrame {

    public Testing() {
        setSize(400, 200);
        JPanel jp1 = new JPanel();
        GridBagLayout gbl = new GridBagLayout();
        GridBagConstraints gbc = new GridBagConstraints();
        jp1.setLayout(gbl);
        gbc.gridx = 0;
        gbc.gridy = 0;
        gbl.setConstraints(new StudentData(), gbc);
        jp1.add(new StudentData());

        gbc.gridx = 1;
        gbc.gridy = 0;
        gbl.setConstraints(new StdPhoto(), gbc);
        jp1.add(new StdPhoto());
        add(jp1);
        setVisible(true);
    }

    public static void main(String[] args) {
        new Testing();
    }

}

'StdPhoto' 的更正代码,它在此工作正常我首先初始化 'JLabel' 然后做其他工作

   import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.BorderFactory;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JFileChooser;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.border.BevelBorder;
import javax.swing.border.Border;
import javax.swing.border.TitledBorder;
import javax.swing.filechooser.FileNameExtensionFilter;
import java.io.File;

public class StdPhoto extends JPanel {

    JLabel imageLabel = null;
    Icon stImage = null;
    JFileChooser fileChooser = null;
    FileNameExtensionFilter filter = null;
    File fChoose = null;
    Border border = null;
    TitledBorder title = null;

    public StdPhoto() {
        setLayout(new BorderLayout());
        imageLabel = new JLabel();
        border = BorderFactory.createLoweredBevelBorder();
        title = BorderFactory.createTitledBorder(border, "Picutre");
        title.setTitlePosition(TitledBorder.ABOVE_TOP);
        imageLabel.setBorder(title);
        imageLabel.setPreferredSize(new Dimension(150, 150));
        imageLabel.setMinimumSize(getPreferredSize());
        imageLabel.setMaximumSize(getPreferredSize());

        add(imageLabel);
        fileChooser = new JFileChooser();
        filter = new FileNameExtensionFilter("Image Files", "jpg", "png", "gif", "jpeg");
        fileChooser.setFileFilter(filter);
        imageLabel.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
                int result = fileChooser.showOpenDialog(null);
                if(result == JFileChooser.APPROVE_OPTION)
                    fChoose = fileChooser.getSelectedFile();
                String sName = fChoose.getAbsolutePath();
                stImage = new ImageIcon(sName);
                imageLabel.setIcon(stImage);
            }
        });
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM