hallo,
ich habe ein Quellcode gefunden, mit dem man ein jpg öffnen kann. Über 2 Button ist es dann möglich zu zoomen. Leider ist es so, dass mir noch der JScrollPane fehlt, sobald das Bild übergröße bekommt, kann ich nicht scollen.
Laut Java Buch:
Meine Idee:
Aber irgend wie haut das nicht hin :-(
ich habe ein Quellcode gefunden, mit dem man ein jpg öffnen kann. Über 2 Button ist es dann möglich zu zoomen. Leider ist es so, dass mir noch der JScrollPane fehlt, sobald das Bild übergröße bekommt, kann ich nicht scollen.
Java:
import java.awt.BorderLayout;
import java.awt.Canvas;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.ImageObserver;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
class Zoom extends Canvas implements ImageObserver {
Image img;
int iw;
int ih;
int x;
int y;
int adjX = 0;
int adjY = 0;
int adjW = 0;
int adjH = 0;
Dimension ds;
Zoom() {
img = getToolkit().getImage("c://1.jpg");
ds = getToolkit().getScreenSize();
}
@Override
public void paint(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
setImageBounds();
g2d.translate(x, y);
g2d.drawImage(img, 0, 0, iw, ih, this);
}
public void setImageBounds() {
x = (int) ds.getWidth() / 2 - img.getWidth(this) / 2 + adjX;
y = (int) ds.getHeight() / 2 - img.getHeight(this) / 2 + adjY;
iw = img.getWidth(this) + adjW;
ih = img.getHeight(this) + adjH;
}
public void zoomIn() {
adjX -= 10;
adjY -= 10;
adjW += 20;
adjH += 20;
}
public void zoomOut() {
if (x < (int) ds.getWidth() / 2 - img.getWidth(this) / 2) {
adjX += 10;
adjY += 10;
adjW -= 20;
adjH -= 20;
}
}
}
class MainInter extends JFrame implements ActionListener {
JButton btZoomIn;
JButton btZoomOut;
JPanel panel;
Zoom z;
MainInter() {
setTitle("Image zoom");
// //////////////////////////////////// ab hier.....
z = new Zoom();
add(z, BorderLayout.CENTER);
// ///////////////////////////////////// bis hier will ich den Code
// verändern.
btZoomIn = new JButton("+");
btZoomIn.addActionListener(this);
btZoomOut = new JButton("-");
btZoomOut.addActionListener(this);
btZoomOut.setOpaque(false);
panel = new JPanel();
panel.setLayout(new FlowLayout());
panel.add(btZoomIn);
panel.add(btZoomOut);
add(panel, BorderLayout.SOUTH);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setExtendedState(this.getExtendedState() | JFrame.MAXIMIZED_BOTH);
setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == btZoomIn) {
z.zoomIn();
z.repaint();
} else if (e.getSource() == btZoomOut) {
z.zoomOut();
z.repaint();
}
}
}
public class ImageZoom {
public static void main(String args[]) {
new MainInter();
}
}
Laut Java Buch:
Java:
JLabel label = new JLabel(new ImageIcon("test.jpg"));
JScrollPane left = new JScrollPane(label);
left.setPreferredSize(new Dimension(200,200));
....
Meine Idee:
Java:
z=new Zoom();
JScrollPane left = new JScrollPane(z);
add(left,BorderLayout.CENTER );
Aber irgend wie haut das nicht hin :-(
Zuletzt bearbeitet von einem Moderator: