如何解决通过单击JButton在JPanel上显示图像
我刚刚开始学习GUI编程,并且在加载图像时遇到了问题。 我想在BorderLayout的WEST上放置一个JButton,并通过单击该JButton在CENTER中显示图像。
请参考这张图片:
代码如下所示。我已经尝试了几个小时,但还是没能做到。
public class Testing extends JFrame {
private JButton btn;
private JLabel pict;
private JPanel wpanel,cpanel;
private BufferedImage image;
Testing(){
Container cont = getContentPane();
setLayout(new BorderLayout());
//add button
wpanel = new JPanel();
cpanel = new JPanel();
btn = new JButton("Click me");
wpanel.add(btn);
//Clicking button to load image
//inner class
btn.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent evt){
try {
loadImage();
SwingUtilities.invokeLater(new Runnable(){
@Override
public void run() {
createAndShowGUI();
}
});
} catch (IOException e) {
System.out.println("Couldn't load image.");
}
}
});
public void loadImage() throws IOException{
image = ImageIO.read(Testing.class.getResource("/path/.jpg"));
}
public void createAndShowGUI(){
pict = new JLabel();
pict.setIcon(new ImageIcon(image));
cpanel.add(pict);
}
//end of clicking button to load image
cont.add(wpanel,BorderLayout.WEST);
cont.add(cpanel,BorderLayout.CENTER);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setTitle("JFrame");
setSize(300,300);
setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new Testing();
}
});
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。