左側にクリックして右側に表示できる画像のリストを含む流出したパネルを使用していますが、画像が多少あります。私は画像をウィンドウサイズで拡大縮小可能にしたい。 EXITボタンの近くにマウスをドラッグしてウィンドウを大きくすると、画像が大きくなり、その逆も小さくなります。現時点では、JFrameはデフォルトのウィンドウサイズが固定されていますが、イメージが大きすぎて完全に表示されません。JPanelでイメージをウィンドウサイズにスケーラブルにするにはどうすればいいですか?
ドライバー・クラス:
import java.awt.*;
import javax.swing.*;
public class PickImage
{
//-----------------------------------------------------------------
// Creates and displays a frame containing a split pane. The
// user selects an image name from the list to be displayed.
//-----------------------------------------------------------------
public static void main(String[] args)
{
JFrame frame = new JFrame("Pick Image");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setSize(500, 300);
JLabel imageLabel = new JLabel();
JPanel imagePanel = new JPanel();
imagePanel.add(imageLabel);
imagePanel.setBackground(Color.white);
ListPanel imageList = new ListPanel(imageLabel);
JSplitPane sp = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,
imageList, imagePanel);
sp.setOneTouchExpandable(true);
frame.getContentPane().add(sp);
frame.setVisible(true);
}
}
ListPanelクラス:JPanelのは、デフォルトでFlowLayoutのを使用して、すべての
import java.awt.*;
import javax.swing.*;
import javax.swing.event.*;
public class ListPanel extends JPanel
{
private JLabel label;
private JList list;
public ListPanel(JLabel imageLabel)
{
label = imageLabel;
String[] fileNames = { "Denali2.jpg",
"denali.jpg",
"MauiLaPerouseBay.jpg",
};
list = new JList(fileNames);
list.addListSelectionListener(new ListListener());
list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
add(list);
setBackground(Color.white);
}
private class ListListener implements ListSelectionListener
{
public void valueChanged(ListSelectionEvent event)
{
if (list.isSelectionEmpty())
label.setIcon(null);
else
{
String fileName = (String)list.getSelectedValue();
ImageIcon image = new ImageIcon(fileName);
label.setIcon(image);
}
}
}
}
[ImageIconを自動的にラベルサイズに合わせる]の複製が可能です(http://stackoverflow.com/questions/14548808/scale-the-imageicon-automatically-to-label-size) – Titus