Kuinkaha moinen onnistuu swingsovelluksessa?
Kuvan näyttäminen Javallla
P
2314
0Äänestä
Muut lukivat myös
Odottaa vastausta
Näihin keskusteluihin ei ole vielä vastattu. Ole ensimmäinen.
Turvaa tilisi vahvistamalla puhelinnumerosi. Voit silloin palauttaa unohtuneen salasanan tekstiviestillä.
Näihin keskusteluihin ei ole vielä vastattu. Ole ensimmäinen.
Vastaukset 2
Vanhimmat
import javax.swing.*;
import java.awt.*;
/**
* Jotta paneeliin voi piirtää täytyy
* määritellä JPanel luokkaa laajentava luokka
* ja syrjäyttää paintComponent-metodi kyseisessä luokassa(yleissääntö)
*/
//ESIM:
public class SwingKuva extends JFrame{
Container sisalto = getContentPane();
Image img = null;
PiirtoAlusta p = new PiirtoAlusta();
public SwingKuva(){
setSize(300,300);
img = getToolkit().getImage("Malli.jpg");
p.setSize(300,300);
sisalto.add(p);
p.repaint();
setVisible(true);
}
/**
* Yksi vaihtoehto on piirtää se käyttämällä esim JLabel:ia
* jolloin säästytään luokan tekemiseltä
* JLabel lbl_kuva = new JLabel(new ImageIcon("Malli.jpg"));
*/
public static void main(String [] args){
new SwingKuva();
}
/**
* Piirtämisessä käytettävä paneeli
*/
class PiirtoAlusta extends JPanel{
public void paintComponent(Graphics g){
super.paintComponent(g);
g.drawImage(img,40,35,200,200,this);
}
}
}
Esim. näin.
Oleelliset luokat on paintComponent-metodin saama Graphics ja myös Image.
Tässä esimerkissä vähän sekottaa kun samaa kuvaa kopioidaan moneen kertaan for silmukassa copyArea-metodilla ja sitten vielä hidastellaan aloitusta MediaTracker luokalla.
/**
* @version 1.20 23 Jun 1998
* @author Cay Horstmann
*/
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class ImagePanel extends JPanel
{ public ImagePanel()
{ image = Toolkit.getDefaultToolkit().getImage
("blue-ball.gif");
MediaTracker tracker = new MediaTracker(this);
tracker.addImage(image, 0);
try { tracker.waitForID(0); }
catch (InterruptedException e) {}
}
public void paintComponent(Graphics g)
{ super.paintComponent(g);
Dimension d = getSize();
int clientWidth = d.width;
int clientHeight = d.height;
int imageWidth = image.getWidth(this);
int imageHeight = image.getHeight(this);
g.drawImage(image, 0, 0, this);
for (int i = 0; i * imageWidth