Archief - [PROG][JAVA] Iets zoals een picturebox?

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

yannick

Legacy Member
Goedeavond,

Ik ben bezig met een project en hier moeten wij een GUI voor maken. Het lukt allemaal vlotjes, maar ik weet enkel TOTAAL niet hoe ik images (zelfs gemaakt banners bijvoorbeeld) in mijn form krijg. Ook weet ik niet hoe ik een image als achtergrond kan zetten.

Ik heb al wat rond gezocht op google, maar mits ik niet echt weet wat ik zoek, ben ik daar niet veel wijzer uit geworden :).

Kunnen jullie mij misschien zeggen (of in de richting duwen :p) hoe ik mij GUI wat kan verfraaien door er images op te laten zien? :)

Mvg

Yannick Wellens

Robain

Legacy Member
Daarvoor gebruik je toch gewoon een ImageIcon ??

Je kan deze dan op vanalles zetten zoals JPanels, JButtons, ...


Greetz

yannick

Legacy Member
Het probleem is, hoe gebruik ik het.

Ik wil mijn Frame een background geven die automatisch de grote van de jframe aanneemt.

ik heb dit stuk code gevonden
Code:
package bowling;
import javax.swing.*;
import java.awt.*;

public class BackgroundSample {
  public static void main(String args[]) {
    JFrame frame = new JFrame("Background Example");
    final ImageIcon imageIcon = new ImageIcon("DCI.jpg");
    JTextArea textArea = new JTextArea() {
      Image image = imageIcon.getImage();
      {setOpaque(false);}  // instance initializer
      public void paintComponent (Graphics g) {
        Dimension d = getSize();
	g.drawImage(image, 0, 0, d.width, d.height, null);
        super.paintComponent(g);
      }
    };
    JScrollPane scrollPane = new JScrollPane(textArea);
    Container content = frame.getContentPane();
    content.add(scrollPane, BorderLayout.CENTER);
    frame.setDefaultCloseOperation(3);
    frame.setSize(250, 250);
    frame.setVisible(true);
  }
}

Maar ik weet niet hoe ik het in mijn frame kan importen en hoe ik zorg da hij de background ook zet ZONDER die JTextArea.

yannick

Legacy Member
Code:
package bowling;

import bowlingconnection.bowlingconnection;
import java.awt.*;
import java.net.URL;
import java.sql.*;
import java.util.ArrayList;
import javax.swing.*;

/**
 *
 * @author  Welles
 */
public class test extends javax.swing.JFrame {
    public test() {
        initComponents();
        centerScreen();
    }
    private void centerScreen() {
        Dimension dim = getToolkit().getScreenSize();
        Rectangle abounds = getBounds();
        setLocation((dim.width - abounds.width) / 2,
            (dim.height - abounds.height) / 2);
    }
    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    private void initComponents() {                          
        jPanel1 = new javax.swing.JPanel();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setUndecorated(true);
        addComponentListener(new java.awt.event.ComponentAdapter() {
            public void componentResized(java.awt.event.ComponentEvent evt) {
                formComponentResized(evt);
            }
        });

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 363, Short.MAX_VALUE)
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 312, Short.MAX_VALUE)
        );

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
        );
        pack();
    }                        

    private void formComponentResized(java.awt.event.ComponentEvent evt) {                                      
        Dimension d = this.getSize();
        this.jPanel1.setSize(d);
    }                                     
    
    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new test().setVisible(true);
            }
        });
    }
    
    // Variables declaration - do not modify                     
    private javax.swing.JPanel jPanel1;
    // End of variables declaration                   

    
}

Dit heb ik vlug ff gemaakt me netbeans, ik heb echt GEEN idee hoe ik met deze code kan zorgen dat ik een image kan toevoegen :'(. Ik ben der al uren mee bezig :(.

jodeman

Legacy Member
gebruik bufferstrategy

maak een jpanel in een jframe en doe in de paint methode
ach ja, heb het snel gemaakt

Code:
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class TestFrame extends JFrame {
	private Image test;

	public TestFrame() {
		readImage("0000.jpg");

		addPanel();
		init();
	}

	private void addPanel() {
		this.getContentPane().add(new JPanel() {
			public void paintComponent(Graphics g) {
				Graphics2D g2d = (Graphics2D) g;

				g2d.drawImage(test,0,0,getWidth(),getHeight(),null);
			}
		});
	}

	public void init() {
                this.createBufferStrategy(2);
		this.setSize(600,400);
		this.setVisible(true);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}

	public void readImage(String name) {
		try {
			test = ImageIO.read(new File(name));
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	public static void main(String[] args) {
		new TestFrame();
	}
}

edit : gebruik trouwens 1.6sdk voor java want die heeft echt een hoop verbeteringen in swing

yannick

Legacy Member
jodeman zei:
gebruik bufferstrategy

maak een jpanel in een jframe en doe in de paint methode
ach ja, heb het snel gemaakt

Code:
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class TestFrame extends JFrame {
	private Image test;

	public TestFrame() {
		readImage("0000.jpg");

		addPanel();
		init();
	}

	private void addPanel() {
		this.getContentPane().add(new JPanel() {
			public void paintComponent(Graphics g) {
				Graphics2D g2d = (Graphics2D) g;

				g2d.drawImage(test,0,0,getWidth(),getHeight(),null);
			}
		});
	}

	public void init() {
                this.createBufferStrategy(2);
		this.setSize(600,400);
		this.setVisible(true);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}

	public void readImage(String name) {
		try {
			test = ImageIO.read(new File(name));
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	public static void main(String[] args) {
		new TestFrame();
	}
}

edit : gebruik trouwens 1.6sdk voor java want die heeft echt een hoop verbeteringen in swing

Ik gebruik idd 1.6 ;).

Ik zit nog wel beetje vast, hij zegt Exception in thread "main" java.lang.IllegalStateException: Component must have a valid peer.

*EDIT*

Merci, kheb het gevonden :). ge moet dus nog ne super.addNotify(); doen om uw peer te createn :)

Thnx ^^
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan