A
Amateur2000
Hallo,
ich habe folgendes Problem:
ich moechte ein geladenes Bild als ScrollPane einrichten, um es mit ScrollBars verschieben zu koennen, habe aber keine Ahnung, wie ich das machen soll. Bin dankbar fuer jede Hilfe
Code-Beispiele waeren super
Mein Code sieht folgendermassen aus:
Ich arbeite mit eclipse und habe fuer jede Klasse eine eigene Datei angelegt.
Ich hab's schon mit ScrollablePicture versucht, wie es in http://java.sun.com/docs/books/tutorial/uiswing/components/scrollpane.html in einem Beispiel steht, aber da bekomme ich ne Fehlermeldung, weil eclipse ScrollablePicture nicht kennt.
ich habe folgendes Problem:
ich moechte ein geladenes Bild als ScrollPane einrichten, um es mit ScrollBars verschieben zu koennen, habe aber keine Ahnung, wie ich das machen soll. Bin dankbar fuer jede Hilfe
Code-Beispiele waeren super
Mein Code sieht folgendermassen aus:
Code:
public class PaintOnComponent extends JFrame implements ActionListener {
private PictureHandler drawPanel;
private JFileChooser fc;
private JButton b;
public PaintOnComponent()
{
b = new JButton ( "Button");
b.addActionListener( this);
Container c = getContentPane();
c.setLayout (new BorderLayout(3,3));
c.add(b,BorderLayout.NORTH);
fc = new JFileChooser();
drawPanel = new PictureHandler();
drawPanel.showImage(fc.getSelectedFile());
drawPanel.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e)
{
drawPanel.addPoint(e.getPoint());
repaint();
}
});
drawPanel.setSize(500,500);
getContentPane().add(drawPanel,BorderLayout.CENTER);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(500,500);
}
public static void main(String[] args)
{
PaintOnComponent p = new PaintOnComponent();
p.setVisible(true);
}
public void actionPerformed(ActionEvent event) {
if (event.getSource()==b) {
int returnVal = fc.showOpenDialog(PaintOnComponent.this);
drawPanel.showImage(fc.getSelectedFile()); // TODO Auto-generated method stub
}
}
}
class PictureHandler extends JComponent {
BufferedImage bi;
private ArrayList points = new ArrayList();
public void addPoint(Point p)
{
points.add(p);
}
public void showImage(File f) {
try {
bi = ImageIO.read(f);
//bi.setPreferedSize(new Dimension(bi.getWidth(),bi.getHeight()));
}
catch (Exception e) {
System.out.println("Fehler beim Bildladen");
}
repaint();
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
if (bi != null) {
g.drawImage(bi,0,0,bi.getWidth(),bi.getHeight(),Color.white,null);
}
g.setColor(Color.RED);
Iterator it = points.iterator();
while (it.hasNext())
{
Point p = (Point) it.next();
g.fillOval(p.x,p.y,5,5);
}
}
}
Ich arbeite mit eclipse und habe fuer jede Klasse eine eigene Datei angelegt.
Ich hab's schon mit ScrollablePicture versucht, wie es in http://java.sun.com/docs/books/tutorial/uiswing/components/scrollpane.html in einem Beispiel steht, aber da bekomme ich ne Fehlermeldung, weil eclipse ScrollablePicture nicht kennt.