java 图片自适应_java怎样设置图片适应容器大小

这个Java程序展示了如何创建一个JSplitPane,其中包含一个图片列表和一个显示所选图片的区域。当在列表中选择不同的图片时,图片会自适应调整大小以适应容器。使用了JList来显示图片名称,通过监听列表选择事件来更新显示的图片。
摘要由CSDN通过智能技术生成

展开全部

//你可e68a843231313335323631343130323136353331333264643236以试试这个程序 和你说的差不多

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

import javax.swing.event.*;

import java.util.*;

//SplitPaneDemo itself is not a visible component.

public class SplitPaneDemo extends JPanel

implements ListSelectionListener {

private JLabel picture;

private JList list;

private JSplitPane splitPane;

private String[] imageNames = { "Bird", "Cat", "Dog", "Rabbit", "Pig", "dukeWaveRed",

"kathyCosmo", "lainesTongue", "left", "middle", "right", "stickerface"};

public SplitPaneDemo() {

//Create the list of images and put it in a scroll pane.

list = new JList(imageNames);

list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

list.setSelectedIndex(0);

list.addListSelectionListener(this);

JScrollPane listScrollPane = new JScrollPane(list);

picture = new JLabel();

picture.setFont(picture.getFont().deriveFont(Font.ITALIC));

picture.setHorizontalAlignment(JLabel.CENTER);

JScrollPane pictureScrollPane = new JScrollPane(picture);

//Create a split pane with the two scroll panes in it.

splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,

listScrollPane, pictureScrollPane);

splitPane.setOneTouchExpandable(true);

splitPane.setDividerLocation(150);

//Provide minimum sizes for the two SplitPaneDemo in the split pane.

Dimension minimumSize = new Dimension(100, 50);

listScrollPane.setMinimumSize(minimumSize);

pictureScrollPane.setMinimumSize(minimumSize);

//Provide a preferred size for the split pane.

splitPane.setPreferredSize(new Dimension(400, 200));

updateLabel(imageNames[list.getSelectedIndex()]);

}

//Listens to the list

public void valueChanged(ListSelectionEvent e) {

JList list = (JList)e.getSource();

updateLabel(imageNames[list.getSelectedIndex()]);

}

//Renders the selected image

protected void updateLabel (String name) {

ImageIcon icon = createImageIcon("images/" + name + ".gif");

picture.setIcon(icon);

if (icon != null) {

picture.setText(null);

} else {

picture.setText("Image not found");

}

}

//Used by SplitPaneDemo2

public JList getImageList() {

return list;

}

public JSplitPane getSplitPane() {

return splitPane;

}

/** Returns an ImageIcon, or null if the path was invalid. */

protected static ImageIcon createImageIcon(String path) {

java.net.URL imgURL = SplitPaneDemo.class.getResource(path);

if (imgURL != null) {

return new ImageIcon(imgURL);

} else {

System.err.println("Couldn't find file: " + path);

return null;

}

}

/**

* Create the GUI and show it. For thread safety,

* this method should be invoked from the

* event-dispatching thread.

*/

private static void createAndShowGUI() {

//Create and set up the window.

JFrame frame = new JFrame("SplitPaneDemo");

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

SplitPaneDemo splitPaneDemo = new SplitPaneDemo();

frame.getContentPane().add(splitPaneDemo.getSplitPane());

//Display the window.

frame.pack();

frame.setVisible(true);

}

public static void main(String[] args) {

//Schedule a job for the event-dispatching thread:

//creating and showing this application's GUI.

javax.swing.SwingUtilities.invokeLater(new Runnable() {

public void run() {

createAndShowGUI();

}

});

}

}

本回答被提问者和网友采纳

2Q==

已赞过

已踩过<

你对这个回答的评价是?

评论

收起

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值