Ich verwende Spilled Panels, die eine Liste von Bildern hat, die auf der linken Seite angeklickt werden können und dann auf der rechten Seite gezeigt werden, habe ich etwas große Bilder. Ich möchte die Bilder mit der Fenstergröße skalierbar machen. Wenn ich also meine Maus in die Nähe der EXIT-Taste ziehe und das Fenster größer mache, wird das Bild größer und umgekehrt für kleinere. Im Moment ist mein JFrame FIXED Standard-Fenstergröße, aber selbst dann sind die Bilder zu groß, um vollständig gesehen zu werden.Wie kann ich meine Bilder in JPanel auf Fenstergröße skalieren?
hier ist mein Code:
Treiberklasse:
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 Klasse:
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);
}
}
}
}
Mögliche Duplikat [Skalieren des ImageIcon automatisch Etikettengröße] (http://stackoverflow.com/questions/14548808/scale-the-imageicon-automatically-to-label-size) – Titus