Hallo Leute,
ich versuche gerade das Bild in einem JLabel zu skalieren. Das Bild wird zurzeit in einem String gespeichert und dann auf dem JLabel in einem neuen Icon angezeigt. Nun habe ich den Code für die Skalierung geschrieben, aber es geht nicht weil es ein String ist. Könnt ihr mir da helfen?
ich versuche gerade das Bild in einem JLabel zu skalieren. Das Bild wird zurzeit in einem String gespeichert und dann auf dem JLabel in einem neuen Icon angezeigt. Nun habe ich den Code für die Skalierung geschrieben, aber es geht nicht weil es ein String ist. Könnt ihr mir da helfen?
Java:
import javax.swing.JFrame;
public class Start {
public Start()
{
}
public static void main( String[] args ) {
Window theWindow = new Window();
theWindow.setBounds(10, 10, 1000, 800);
theWindow.setResizable(false);
theWindow.setLocationRelativeTo(null);
theWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
theWindow.setTitle("Location Checker Alpha 0.1");
theWindow.show();
}
}
Java:
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.Graphics2D;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileFilter;
import java.io.InputStream;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.border.Border;
import javax.swing.border.LineBorder;
import javax.swing.filechooser.FileNameExtensionFilter;
public class Window extends JFrame implements ActionListener {
JButton b_exit;
JButton b_picture;
JLabel label;
Border border;
public Window() {
this.getContentPane().setLayout(null);
this.initWindow();
}
protected void initWindow()
{
// Instanzieren:
Border border = LineBorder.createGrayLineBorder();
b_exit = new JButton("Beenden");
b_picture = new JButton("Bild öffnen");
label = new JLabel();
label.setBorder(border);
b_picture.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
buttonPictureClicked(arg0);
}
});
// Positionen festlegen
b_exit.setBounds(800,500,100,30);
b_exit.addActionListener(this);
b_picture.setBounds(300,110,100,30);
b_picture.addActionListener(this);
label.setBounds(300,300,500,500);
// Elemente dem Fenster hinzufügen:
this.getContentPane().add(b_exit);
this.getContentPane().add(b_picture);
this.getContentPane().add(label, "Center");
this.pack();
}
public void buttonPictureClicked(ActionEvent evt)
{
Object source = evt.getSource();
if (source == b_picture) {
JFileChooser chooser = new JFileChooser();
chooser.setCurrentDirectory(new File("."));
chooser.setFileFilter(new javax.swing.filechooser.FileFilter() {
public boolean accept(File f) {
return f.getName().toLowerCase().endsWith(".jpg")
|| f.isDirectory();
}
public String getDescription() {
return "JPG Images";
}
});
int r = chooser.showOpenDialog(this);
if (r == JFileChooser.APPROVE_OPTION) {
String name = chooser.getSelectedFile().getAbsolutePath();
int scale = 4;
BufferedImage bi = new BufferedImage(
scale*name.getIconWidth(),
scale*name.getIconHeight(),
BufferedImage.TYPE_INT_ARGB);
Graphics2D g = bi.createGraphics();
g.scale(scale,scale);
name.paintIcon(null,g,0,0);
g.dispose();
label.setIcon(new ImageIcon(bi));
}
} else if (source == b_exit)
System.exit(0);
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
}
}