S
Sensei
Gast
Hallo!
Ich will ein Programm schreiben, welches ein Bild laden und in einer Scrollpane anzeigen kann. Außerdem sollen da später Rechtecke, Kreise usw. drübergezeichnet werden.
Ich habe bisher:
zum Ausführen könnt ihr folgendes Aufrufen:
Das Problem: Das reinladen des Bildes funktioniert zwar, es wird aber nicht in einer Scrollpane dargestellt
Ich probiere da wirklich schon länger herum...
Und noch eine Frage: Wie geht das, dass ich dann auf dieses Bild Dinge draufzeichne (wie oben erwähnt Rechtecke usw).
Danke, lg, Sensei
Ich will ein Programm schreiben, welches ein Bild laden und in einer Scrollpane anzeigen kann. Außerdem sollen da später Rechtecke, Kreise usw. drübergezeichnet werden.
Ich habe bisher:
Code:
import java.awt.*;
import java.awt.event.*;
import java.io.File;
import javax.swing.*;
import javax.swing.filechooser.FileFilter;
public class CGMainFrm extends JFrame implements ActionListener
{
private ViewComponent viewComponent = new ViewComponent();
private JScrollPane pictureScrollPane;
public CGMainFrm(){
super( "Bildbetrachter" );
JMenuBar mbar = new JMenuBar();
JMenu menu = new JMenu( "Datei" );
JMenuItem item = new JMenuItem( "Öffnen" );
item.setAccelerator( KeyStroke.getKeyStroke(KeyEvent.VK_O, KeyEvent.CTRL_MASK) );
item.addActionListener( this );
menu.add( item );
mbar.add( menu );
setJMenuBar( mbar );
JScrollPane sp = new JScrollPane(viewComponent);
sp.createVerticalScrollBar();
sp.createHorizontalScrollBar();
sp.setPreferredSize(new Dimension(300, 250));
sp.setViewportBorder(
BorderFactory.createLineBorder(Color.black));
add( sp );
setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
setSize( 600, 400 );
}
public void actionPerformed( ActionEvent e ) {
JFileChooser d = new JFileChooser();
d.setFileFilter( new FileFilter() {
public boolean accept(File f)
{
return f.isDirectory() || f.getName().toLowerCase().endsWith(".jpg") || f.getName().toLowerCase().endsWith(".gif");
}
public String getDescription()
{
return "*.jpg;*.gif";
}
} );
d.showOpenDialog( null );
File file = d.getSelectedFile();
viewComponent.setImage( file );
}
}
class ViewComponent extends JComponent {
private Image image;
protected void paintComponent( Graphics g ) {
if ( image != null )
g.drawImage( image, 0, 0, this );
}
public void setImage( File file ) {
image = Toolkit.getDefaultToolkit().getImage( file.getAbsolutePath() );
if ( image != null )
repaint();
}
}
zum Ausführen könnt ihr folgendes Aufrufen:
Code:
public class MapEditor {
public static void main(String[] args) {
new CGMainFrm().setVisible( true );
}
}
Das Problem: Das reinladen des Bildes funktioniert zwar, es wird aber nicht in einer Scrollpane dargestellt
Ich probiere da wirklich schon länger herum...
Und noch eine Frage: Wie geht das, dass ich dann auf dieses Bild Dinge draufzeichne (wie oben erwähnt Rechtecke usw).
Danke, lg, Sensei