//Import av nödvändiga klasser import java.awt.*; import javax.swing.*; import java.net.*; import javax.swing.event.*; /** * MINT - Uppgift 2d * Denna JApplet läser in 2 bilder och visar dessa med olika grad av * transparens. * * @author Blanca Larkeson */ public class Transparens2 extends JApplet { private BildPanel bp; private float alphaValue = 0.50f; private JTextField textField; private JLabel textLabel; //Initiering av appleten och placering av komponenter public void init() { Container con = getContentPane(); bp = new BildPanel(); con.add("Center", bp); JPanel panel = new JPanel(); textLabel = new JLabel("Transparens: "); JSlider slider = new JSlider(JSlider.HORIZONTAL, 0, 100, 50); slider.setMajorTickSpacing(10); slider.setMinorTickSpacing(5); slider.setPaintTicks(true); slider.setPaintLabels(true); slider.addChangeListener(new SliderListener()); textField = new JTextField("0.50", 3); panel.add(textLabel); panel.add(slider); panel.add(textField); con.add("South", panel); } //Lysnare för JSlider class SliderListener implements ChangeListener { public void stateChanged(ChangeEvent e) { JSlider tempSlider = (JSlider) e.getSource(); alphaValue = (float)(tempSlider.getValue()/100.0); textField.setText(Float.toString(alphaValue)); bp.repaint(); } } //Egendefinierad inre klass som ärver från JPanel class BildPanel extends JPanel { private Image bild1; private Image bild2; private AlphaComposite ac; //Konstruktor läser in url:en för bilderna public BildPanel() { super(); bild1 = getImage(getDocumentBase(), "skriet.jpg"); bild2 = getImage(getDocumentBase(), "lisa.jpg"); } //Uppritandet sker i en paintComponent public void paintComponent(Graphics g) { super.paintComponent(g); //Första bilden ritas ut g.drawImage(bild1,28,0,this); //Graphics typas om till Graphics2D Graphics2D g2d = (Graphics2D)g; //AlphaComposite.SRC_IN: Innebär att endast den delen av bilden som //överlappar kommer att ritas ut. ac = AlphaComposite.getInstance(AlphaComposite.SRC_OVER, alphaValue); g2d.setComposite(ac); //Andra bilden ritas ut g2d.drawImage(bild2,29,0,this); } } }