Bild neu zeichnen

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo nochmal,

ich bräuchte nochmal hilfe, ich komm nicht drauf, wie ich ein BufferedImage in einer Klasse nach dem setzen der Pixel immer wieder neu zeichnen kann? Ich zeichne mein BufferImage jetzt nur 1 mal (in Klasse 1 initialisiert und in Klasse 2 gezeichnet aber ich weiß nicht, was ich machen muss, um das BufferedImage in einer Klasse 4 zb nach dem setzender Pixel immer wieder neu zu zeichnen.
Vielleicht kann mir da noch jemand einen Tip geben - Ich weiß nicht, ob ich da ein BildPanel - Objekt machen muss oder ob ich mir mir der Methode getImage() das image holen muss das ich verändern will.

Auf jeden Fall vielen Dank für die Hilfe bis jetzt!!

lg
Hannes

Code:
Klasse 1:
ImageComponent displayImage = new ImageComponent();
	for(int i = 0; i < 240; i++)
	    {
	    for (int j = 0; j < 320; j++)
		displayImage.setPixels(j, i, i*j*4000);    //16777215 == weiß, 0 == schwarz
	    } 
	img1 = displayImage.getBuffImage(); 
        add(new BildPanel(img, img1)); 

Klasse 2:
class BildPanel extends JPanel{
    private Image img1;
    private Image img2;
    public BildPanel(Image img1, Image img2){	
         
	this.img1 = img1;
	this.img2 = img2;
	}
    public BildPanel() 
	{}
    protected void paintComponent(Graphics g) 
	{
        super.paintComponent(g);
        g.drawImage(img1,0,0,this);
	g.drawImage(img2, 110, 73, this); 
	}
    public Image getImage()
	{
	return img2;
	}
}


Klasse 3:
class ImageComponent extends JComponent
{
    private BufferedImage bufferedImage;
    public ImageComponent()
    {
        bufferedImage = new BufferedImage(320, 240, BufferedImage.TYPE_INT_RGB);
    }

    public void setPixels(int Reihe, int Spalte, int pixels)
    {
        bufferedImage.setRGB(Reihe, Spalte, pixels);
    }

    public void paintComponent(Graphics g)
    {
        super.paintComponent(g);
        g.drawImage(bufferedImage, 0, 0, this);
    }
     public BufferedImage getBuffImage()
	{
	return bufferedImage;
	}
}
 

Leroy42

Top Contributor
Ändere

Code:
  public void setPixels(int Reihe, int Spalte, int pixels) { 
        bufferedImage.setRGB(Reihe, Spalte, pixels); 
    }

einfach in

Code:
  public void setPixels(int Reihe, int Spalte, int pixels) { 
        bufferedImage.setRGB(Reihe, Spalte, pixels); 
        repaint();
    }
 

e9926044

Bekanntes Mitglied
das hab ich gemacht, und in einer Klasse habe ich den unteren Code geschrieben, aber es funktioniert leider nicht, ich glaub, weil ich ein neues Objekt mache. Aber ich weiß nicht, wies sinst gehen würde.
Hast du'/Ihr da noch einen Tip?

lg und vielen DANK

Hannes

Code:
ImageComponent displayImage = new ImageComponent();

for(int i = 0; i < 240; i++)     //im Konstruktor der Klasse
	    {
	    for (int j = 0; j < 320; j++)
		displayImage.setPixels(j, i, i*j);    //16777215 == weiß, 0 == schwarz
	    }
 

Leroy42

Top Contributor
Du mußt den Teil der die Pixels ändert in einem eigenen Thread
laufen lassen und mit einem sleep-Befehl dem Event-Dispatch-Thread
Gelegenheit geben, das repainting auch zu machen.

repaint() selbst zeichnet nicht neu sondern vermerkt nur,
daß der EDT neu zeichnen soll, sobald er wieder Gelegenheit
dazu hat

Code:
for(int i = 0; i < 240; i++)     //im Konstruktor der Klasse 
       { 
       for (int j = 0; j < 320; j++) 
      displayImage.setPixels(j, i, i*j);    //16777215 == weiß, 0 == schwarz 
      try {Thread.sleep(100);} catch (InterruptedException e) {}
       }
 

Leroy42

Top Contributor
Und bevor du jetzt fragst, wie das geht:

Code:
new Thread(new Runnable() {
  public void run() {
    for(int i = 0; i < 240; i++)     //im Konstruktor der Klasse 
       { 
       for (int j = 0; j < 320; j++) 
       displayImage.setPixels(j, i, i*j);    //16777215 == weiß, 0 == schwarz 
       try {Thread.sleep(100);} catch (InterruptedException e) {} 
       }
}}).start();
 

e9926044

Bekanntes Mitglied
Nö das funktioniert nicht.

Ich hab unten meinen ganzen Code reingegeben, Vielleicht hast du / hat jemand noch eine Idee.

Vielen DANK auf jeden Fall für EUre hilfe!!!

Code:
import java.awt.*;
import java.awt.image.*;
import java.awt.event.*;
import javax.swing.*;
import java.net.*;
import java.io.*;
import java.awt.image.BufferedImage;
import javax.imageio.*;

public class ClientVNC extends JFrame {
    private Image img;
    private Image img1;
    public ImageComponent displayImage = new ImageComponent();
    public ClientVNC() 
	{       
        img = getToolkit().getImage("C:\\\\img1.png");
	MediaTracker mt = new MediaTracker(this);
        mt.addImage(img, 0);
        try {
            mt.waitForAll();
	    }  
	catch (InterruptedException e) 
	    {
	    }
        initComponents();
	for(int i = 0; i < 240; i++)
	    {
	    for (int j = 0; j < 320; j++)
		displayImage.setPixels(j, i, i*j*4000);    //16777215 == weiß, 0 == schwarz
	    } 
	img1 = displayImage.getBuffImage(); 
	setLayout(new BorderLayout());
        add(new BildPanel(img, img1)); 
	addMouseListener(new DedectMouseListener());
	addMouseMotionListener(new MausGezogen()); 
	}
     public ImageComponent getImageObject()
     {
	 return displayImage;
     }
    // <editor-fold defaultstate="collapsed" desc=" Generated Code ">                          
    private void initComponents() {
        jPanel1 = new javax.swing.JPanel();
        labelIPAdresse = new javax.swing.JLabel();
        textFeldIPAdresse = new javax.swing.JTextField();
        labelPortnummer = new javax.swing.JLabel();
        textFeldPortnummer = new javax.swing.JTextField();
        buttonVerbinden = new javax.swing.JButton();
        buttonSchliessen = new javax.swing.JButton();
        jButton1 = new javax.swing.JButton();
        jPanel2 = new javax.swing.JPanel();
        jLabel1 = new javax.swing.JLabel();
        labelStatus = new javax.swing.JLabel();
        MenuBar = new javax.swing.JMenuBar();
        datei = new javax.swing.JMenu();
        schliessen = new javax.swing.JMenuItem();
        ProgrammInfo = new javax.swing.JMenu();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setTitle("VNC Client");
        setAlwaysOnTop(true);
        setBounds(new java.awt.Rectangle(100, 50, 440, 0));
        addHierarchyBoundsListener(new java.awt.event.HierarchyBoundsListener() {
            public void ancestorMoved(java.awt.event.HierarchyEvent evt) {
                formAncestorMoved(evt);
            }
            public void ancestorResized(java.awt.event.HierarchyEvent evt) {
            }
        });

        jPanel1.setBackground(new java.awt.Color(255, 255, 255));
        jPanel1.setBorder(new javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED));
        labelIPAdresse.setText("  IP- Adresse:");

        textFeldIPAdresse.setHorizontalAlignment(javax.swing.JTextField.CENTER);
        textFeldIPAdresse.setText("10.0.0.196");

        labelPortnummer.setText("Portnummer:");

        textFeldPortnummer.setHorizontalAlignment(javax.swing.JTextField.CENTER);
        textFeldPortnummer.setText("5900");

        buttonVerbinden.setText("Verbinden");
        buttonVerbinden.setBorder(new javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED));
        buttonVerbinden.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                buttonVerbindenActionPerformed(evt);
            }
        });

        buttonSchliessen.setText("Schlie\u00dfen");
        buttonSchliessen.setBorder(new javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED));
        buttonSchliessen.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                buttonSchliessenActionPerformed(evt);
            }
        });

        jButton1.setText("jButton1");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addComponent(labelIPAdresse, javax.swing.GroupLayout.PREFERRED_SIZE, 77, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(textFeldIPAdresse, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(labelPortnummer, javax.swing.GroupLayout.PREFERRED_SIZE, 80, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(textFeldPortnummer, javax.swing.GroupLayout.PREFERRED_SIZE, 38, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 60, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(14, 14, 14)
                .addComponent(buttonVerbinden, javax.swing.GroupLayout.PREFERRED_SIZE, 78, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(buttonSchliessen, javax.swing.GroupLayout.PREFERRED_SIZE, 77, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                .addComponent(labelIPAdresse, javax.swing.GroupLayout.DEFAULT_SIZE, 25, Short.MAX_VALUE)
                .addComponent(textFeldIPAdresse, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addComponent(labelPortnummer, javax.swing.GroupLayout.PREFERRED_SIZE, 22, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addComponent(textFeldPortnummer, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addComponent(jButton1)
                .addComponent(buttonVerbinden)
                .addComponent(buttonSchliessen))
        );

        jPanel2.setBackground(new java.awt.Color(255, 255, 255));
        jPanel2.setBorder(new javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED));
        jLabel1.setText("   Status:");

        javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
        jPanel2.setLayout(jPanel2Layout);
        jPanel2Layout.setHorizontalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 66, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(labelStatus, javax.swing.GroupLayout.PREFERRED_SIZE, 233, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(201, Short.MAX_VALUE))
        );
        jPanel2Layout.setVerticalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                .addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, 25, Short.MAX_VALUE)
                .addComponent(labelStatus, javax.swing.GroupLayout.PREFERRED_SIZE, 22, javax.swing.GroupLayout.PREFERRED_SIZE))
        );

        datei.setText("Datei");
        schliessen.setText("Schlie\u00dfen");
        schliessen.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                schliessenActionPerformed(evt);
            }
        });

        datei.add(schliessen);

        MenuBar.add(datei);

        ProgrammInfo.setText("Programminfo");
        MenuBar.add(ProgrammInfo);

        setJMenuBar(MenuBar);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
            .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, 512, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap(591, Short.MAX_VALUE)
                .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
        );
        pack();
    }// </editor-fold>                        

    private void formAncestorMoved(java.awt.event.HierarchyEvent evt) {                                   
 new Thread(new Runnable() {
	    public void run() {
	    for(int i = 0; i < 240; i++)     //im Konstruktor der Klasse
	    {
	    for (int j = 0; j < 320; j++)
		displayImage.setPixels(j, i, i*j);    //16777215 == weiß, 0 == schwarz
	    try {Thread.sleep(100);} catch (InterruptedException e) {}
	    }
	}}).start();
    }                                  

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    ImageComponent displayImage = new ImageComponent();
    for(int i = 0; i < 240; i++)     //im Konstruktor der Klasse
	{
	    for (int j = 0; j < 320; j++)
		displayImage.setPixels(j, i, i*j);    //16777215 == weiß, 0 == schwarz
	try {Thread.sleep(100);} catch (InterruptedException e) {}
       }
    }                                        

    private void buttonVerbindenActionPerformed(java.awt.event.ActionEvent evt) {                                                

	try {
	    OutputThread outTh = new OutputThread();
	    outTh.start();
	    }
	catch (Exception exsock) 
	    {
	    labelStatus.setText("Fehler bei der Verbindung: " + exsock);
	    System.out.println("Thread konnte nicht gestartet werden: " + exsock);
	    }    
    }                                               

    private void buttonSchliessenActionPerformed(java.awt.event.ActionEvent evt) {                                                 
	try {
	    sock.close();
	    } 
	catch(Exception io) 
	    {
	    System.out.println("Die Verbindung konnte nicht geschlossen werden: " + io);
	    }
	System.exit(0);
	
    }                                                
                             
    
    public static void main(String args[]) 
    {
	    java.awt.EventQueue.invokeLater(new Runnable() 
	    {
	    public void run() 
		{	
		new ClientVNC().setVisible(true);
		}
	    });	
    }
    
    
    // Variables declaration - do not modify                     
    private javax.swing.JMenuBar MenuBar;
    private javax.swing.JMenu ProgrammInfo;
    private javax.swing.JButton buttonSchliessen;
    private javax.swing.JButton buttonVerbinden;
    private javax.swing.JMenu datei;
    private javax.swing.JButton jButton1;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JLabel labelIPAdresse;
    private javax.swing.JLabel labelPortnummer;
    public javax.swing.JLabel labelStatus;
    private javax.swing.JMenuItem schliessen;
    private javax.swing.JTextField textFeldIPAdresse;
    private javax.swing.JTextField textFeldPortnummer;
    // End of variables declaration                   
    public boolean pwRichtig;
    public Socket sock;
    public int state;
    public int welcherButton;
}

/* Klasse zum Ausgaben des PowerPanels */
class BildPanel extends JPanel{
    private Image img1;
    private Image img2;
    public BildPanel(Image img1, Image img2){	
         
	this.img1 = img1;
	this.img2 = img2;
	}
    public BildPanel() 
	{}
    protected void paintComponent(Graphics g) 
	{
        super.paintComponent(g);
        g.drawImage(img1,0,0,this);
	g.drawImage(img2, 110, 73, this); 
	}
    public Image getImage()
	{
	return img2;
	}
}

class ImageComponent extends JComponent
{
    private BufferedImage bufferedImage;
    public ImageComponent()
	{
        bufferedImage = new BufferedImage(320, 240, BufferedImage.TYPE_INT_RGB);
	}
    public void setPixels(int Reihe, int Spalte, int pixels)
	{
        bufferedImage.setRGB(Reihe, Spalte, pixels);
	repaint(); 
	}
    public void paintComponent(Graphics g)
    {
        super.paintComponent(g);
        g.drawImage(bufferedImage, 110, 73, this); 
    }
     public BufferedImage getBuffImage()
	{
	return bufferedImage;
	}
} 



class MausGezogen extends MouseAdapter implements MouseMotionListener {
     private int i = 0;
     private boolean[] taste = new boolean[40];
     private int index = 0;
     Image img;
     DedectMouseListener mausEvent = new DedectMouseListener();
     
     public void mouseDragged(MouseEvent eventMove)
	{
	taste = mausEvent.gettasteGedrueckt();
	index = mausEvent.getIndex();
	if (index == 0) {
	    if (eventMove.getX() < 55 || eventMove.getX() > 90 || eventMove.getY() < 153 || eventMove.getY() > 188)
		mausEvent.settasteGedrueckt(index);
	    }
	if (index == 1) {
	    if (eventMove.getX() < 55 || eventMove.getX() > 90 || eventMove.getY() < 203 || eventMove.getY() > 238)
		mausEvent.settasteGedrueckt(index);
	    }
	if (index == 2) {
	    if (eventMove.getX() < 55 || eventMove.getX() > 90 || eventMove.getY() < 253 || eventMove.getY() > 288)
		mausEvent.settasteGedrueckt(index);
	    }
	tasteGedrueckt(index);
	    } 
	
     }
}
/* Klasse für Tastendrücke */
class DedectMouseListener extends MouseAdapter implements MouseListener {   
    private static int xPressed = 0;
    private static int yPressed = 0;
    private int xReleased = 0;
    private int yReleased = 0;
    static int index;
    public static boolean[] tasteGedrueckt = new boolean[40];
    int dX = 35;
    int dY = 35;
    
    public boolean[] gettasteGedrueckt() 
	{		
	return tasteGedrueckt; 	    
	} 
    public void settasteGedrueckt(int x)
	{
	tasteGedrueckt[x] = false;
	System.out.println("Bereich überschritten: Taste " + x + " wurde auf " + tasteGedrueckt[x] + " zurückgesetzt");
	index = 50;
	}
    public static int getIndex()
	{
	return index;
	}
    public static int getxPressed()
	{
	return xPressed;
	}
    public static int getyPressed()
	{
	return yPressed;
	}
    public void mousePressed(MouseEvent event) 
	{
	xPressed = event.getX()-4;
	yPressed = event.getY()-53;
	for (int i = 0; i < 3; i++)
	    {
	    if (xPressed >= 35+i*50 && xPressed <= 35+i*50+dX)   							/* 12 Tasten links unten */
  		{
  		if (yPressed >= 355 && yPressed <= 355+dY)
		    {
		    tasteGedrueckt[i+8] = true;
		    index = i+8;
		    System.out.println("Die Taste " + (i+8) + " wurde gedrückt: " + tasteGedrueckt[i+8]);
		    }    
  		if (yPressed >= 405 && yPressed <= 405+dY)
		    {
		    tasteGedrueckt[i+17] = true;
		    index = i+17;
		    System.out.println("Die Taste " + (i+17) + " wurde gedrückt: " + tasteGedrueckt[i+17]);   
		    }
  		if (yPressed >= 455 && yPressed <= 455+dY)
		    {
		    tasteGedrueckt[i+24] = true;
		    index = i+24;
		    System.out.println("Die Taste " + (i+24) + " wurde gedrückt: " + tasteGedrueckt[i+24]);		    
		    }
  		if (yPressed >= 505 && yPressed <= 505+dY)
		    {
		    tasteGedrueckt[i+33] = true;
		    index = i+33;
		    System.out.println("Die Taste " + (i+33) + " wurde gedrückt: " + tasteGedrueckt[i+33]);		
		    }
  		}
	    
	    if (xPressed >= 205+i*50 && xPressed <= 205+i*50+dX)							/* 8 Tasten in der Mitte unten */
		{
		if (yPressed >= 355 && yPressed <= 355+dY)
		    {
		    tasteGedrueckt[i+11] = true;
		    index = i+11;
		    System.out.println("Die Taste " + (i+11) + " wurde gedrückt: " + tasteGedrueckt[i+11]);		    
		    }
		if (yPressed >= 405 && yPressed <= 405+dY && i == 1)
		    {
		    tasteGedrueckt[20] = true;
		    index = 20;
		    System.out.println("Die Taste 20 wurde gedrückt: " + tasteGedrueckt[20]);		 
		    }
		if (yPressed >= 455 && yPressed <= 455+dY)
		    {
		    tasteGedrueckt[i+27] = true;
		    index = i+27;
		    System.out.println("Die Taste " + (i+27) + " wurde gedrückt: " + tasteGedrueckt[i+27]);		      
		    }
		if (yPressed >= 505 && yPressed <= 505+dY && i == 1)
		    {
		    tasteGedrueckt[36] = true;
		    index = 36;
		    System.out.println("Die Taste 36 wurde gedrückt: " + tasteGedrueckt[36]);		  	
		    }
		}
	    if (xPressed >= 370+i*50 && xPressed <= 370+i*50+dX)							
		{
		if (yPressed >= 355 && yPressed <= 355+dY)
		    {
		    tasteGedrueckt[i+14] = true;
		    index = i+14;
		    System.out.println("Die Taste " + (i+14) + " wurde gedrückt: " + tasteGedrueckt[i+14]);		    
		    }
		
		}
	    }
  	for (int i = 0; i < 4; i++)														
	    {
	    if (yPressed >= 100+i*50 && yPressed <= 100+i*50+dY)
  		{
  		if (xPressed >= 55 && xPressed <= 55+dX)
		    {
		    tasteGedrueckt[i] = true;
		    index = i;
		    System.out.println("Die Taste " + (i) + " wurde gedrückt: " + tasteGedrueckt[i]);		   
		    }
  		else if (xPressed >= 455 && xPressed <= 455+dX)	
		    {
		    tasteGedrueckt[i+4] = true;
		    index = i+4;
		    System.out.println("Die Taste " + (i+4) + " wurde gedrückt: " + tasteGedrueckt[i+4]);		    
		    }
  		}
	    }
	} 
}


/* Klasse für die Verbindung */
class OutputThread extends Thread {
    private int state = 10;
    boolean stoprequested;    
    public int[] input = new int[8];
    public int wertInput = 0;
    int j= 0;
    int k = 0;
    int n = 0;
    int p = 0;
    int m = 0;
    int spaltenausgabe = 0;
    public OutputThread()
	{
	stoprequested = false;
	}
    public synchronized void requestStop()
	{
	stoprequested = true;
	}
    public void run()
	{
	try {
	    Socket sock = new Socket("10.0.0.196", 5900);
	    BufferedReader in = new BufferedReader(new InputStreamReader(sock.getInputStream()));
	    //InputStream inData = sock.getInputStream();
	    BufferedWriter out = new BufferedWriter(new OutputStreamWriter(sock.getOutputStream()));
	    int[] datenInt = new int[100];
	    StringBuffer daten = new StringBuffer();
	    int m = 0;
	    while (stoprequested == false) 
		{
		int getin = in.read();                  
		}
	
	
	}
    }
 

Leroy42

Top Contributor
e9926044 hat gesagt.:
Nö das funktioniert nicht.
Code:
...
public class ClientVNC extends JFrame {
    ...
    public ImageComponent displayImage = new ImageComponent();
    public ClientVNC() 
        ....
	for(int i = 0; i < 240; i++)
	    {
	    for (int j = 0; j < 320; j++)
		displayImage.setPixels(j, i, i*j*4000);    //16777215 == weiß, 0 == schwarz
	    } 
[/quote]

Du hast doch immer noch deine Schleife nicht in einem eigene Thread wie
ich dir gepostet habe.  :autsch:
 

Leroy42

Top Contributor
... und was machen die 957 Konstanten in deiner Klasse DedectMouseListener? :shock:

Das ist ja grausam! :(
 

e9926044

Bekanntes Mitglied
Das was du gepostet hast funktioniert!!, es wird auf meinem Fenster das angezeigt, was ich mit setpixel dem BufferedImage übergebe.

Mein Problem ist eben danach, wenn das BufferedImage schon angezeigt ist und ich dieses in einer "anderen Klasse verändern will, das geht nicht.

ich hab jetzt das unten dazugemacht, diesen Thread rufe ich wie den anderen Thread bei einem Buttondruck auf.
Es funktioniert aber wieder nicht.

Vielleicht hast du noch eine Idee!!

Vielen Dank!!

lg
Hannes

Code:
class DisplayAnzeigen extends Thread {
    
     public DisplayAnzeigen()
	{
	 System.out.println("Ich werde aufgerufen, Thread 2");
	ImageComponent displayImage = new ImageComponent();
	for(int i = 0; i < 240; i++)     //im Konstruktor der Klasse
	    {
	    for (int j = 0; j < 320; j++)
		displayImage.setPixels(j, i, i*j);    //16777215 == weiß, 0 == schwarz
                 try {Thread.sleep(100);} catch (InterruptedException e) {} 
	    }
     }
     
    public void run() {}
    }
 

Leroy42

Top Contributor
Das, was in einem separaten Thread laufen soll, muß
in der run-Methode gecodet werden, nicht im Konstruktor


Code:
class DisplayAnzeigen extends Thread { 
    
    public void run()    { 
    System.out.println("Ich werde aufgerufen, Thread 2"); 
   ImageComponent displayImage = new ImageComponent(); 
   for(int i = 0; i < 240; i++)     //im Konstruktor der Klasse 
       { 
       for (int j = 0; j < 320; j++) 
      displayImage.setPixels(j, i, i*j);    //16777215 == weiß, 0 == schwarz 
                 try {Thread.sleep(100);} catch (InterruptedException e) {} 
       } 
     } 
      
    }

Und nicht vergessen die start-Methode des Threads aufzurufen,
nicht dir run-Methode
 

Leroy42

Top Contributor
Das ist falsch:
Code:
ImageComponent displayImage = new ImageComponent();

Du erstellst dir innerhalb deiner Thread-Klasse ein funkelnagelneues displayImage.

Du mußt auf das displayImage zugreifen, daß auch gezeichnet wird.

Laß das doch einfach mit der eigenen Thread-Klasse und benutze
meine Version mit dem

Code:
new Thread(new Runnable() {...

(einige Posts zuvor)
 

e9926044

Bekanntes Mitglied
hab ich gemacht aber es ändert sich gar nichts am BufferedImage, wenn ich auf den Button Verbinden klicke.#
keine Ahnung was es da hat,
kann es sein, dass ich oben in meiner public Klasse ein Objekt von ImageComponent erstelle, die Pixel setze und dann ausgebe auf den JFrame und dann unten in meinem Thread nochmal ein Objekt von ImageComponent mache, da auch die Pixel setze, aber gezeichnet wirds halt nicht,
ist das möglich?

lg
 

Leroy42

Top Contributor
Hier:

Code:
public class ClientVNC extends JFrame { 
    private Image img; 
    private Image img1; 
    public ImageComponent displayImage = new ImageComponent(); 
    public ClientVNC() 
   {        
        img = getToolkit().getImage("C:\\\\img1.png"); 
   MediaTracker mt = new MediaTracker(this); 
        mt.addImage(img, 0); 
        try { 
            mt.waitForAll(); 
       }  
   catch (InterruptedException e) 
       { 
       } 
        initComponents(); 
new Thread(new Runnable() { 
  public void run() { 
    for(int i = 0; i < 240; i++)     //im Konstruktor der Klasse 
       { 
       for (int j = 0; j < 320; j++) 
       displayImage.setPixels(j, i, i*j);    //16777215 == weiß, 0 == schwarz 
       try {Thread.sleep(100);} catch (InterruptedException e) {} 
       } 
}}).start();
...
}

Ich würde es aber erst ganz am Ende des Konstruktors schreiben
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
berserkerdq2 Habe ein svg bild, kann ich das zu svg koordinaten umrechnen, damit ich den Umriss zeichnen kann? Wenn ja wie? Allgemeine Java-Themen 1
K Zeichnen auf ein Bild und Scrollen Allgemeine Java-Themen 7
berserkerdq2 Wenn ich einfach eine GIF in den Scenebuilder als Bild reinpacke, wird das dann asl Gif angezeigt Allgemeine Java-Themen 1
OnDemand Prüfen ob Bild defekt ist Allgemeine Java-Themen 4
Y Bild in JPanel setzen Allgemeine Java-Themen 2
Kirby.exe Bild im Zentrum spiegeln Allgemeine Java-Themen 14
I Apache POI Bild in Word ersetzen Allgemeine Java-Themen 15
OnDemand Bild prüfen ob defekt Allgemeine Java-Themen 3
L Input/Output Kassenzettel lesen aus einem Bild Allgemeine Java-Themen 2
K Bild in einem anderen Bild suchen Allgemeine Java-Themen 12
R Compiler-Fehler Bild per E-Mail versenden Allgemeine Java-Themen 3
M Java- Bild gewissen Anzahl von Sekunden anzeigen?! Allgemeine Java-Themen 4
RalleYTN 2D-Grafik Bild mit bilinearer Interpolation skalieren Allgemeine Java-Themen 31
RalleYTN 2D-Grafik Bild ohne AWT, Swing und JavaFX rotieren Allgemeine Java-Themen 12
S Telefonbuch mit Bild Allgemeine Java-Themen 4
A 2D-Grafik Text in ein Bild schreiben Allgemeine Java-Themen 11
Tacofan GIF-Bild wird "zerstört" Allgemeine Java-Themen 3
B Bild aus Jar kann nach Export nicht mehr gefunden werden Allgemeine Java-Themen 13
T Neuen Kanal in Bild (TIFF) einfügen à la Photoshop Allgemeine Java-Themen 2
Z Zahlen aus Bild auslesen Allgemeine Java-Themen 1
X Bild -> lokale Variable -> DB -> lokale Variable Allgemeine Java-Themen 3
E 3D Objekte in 2D Bild finden Allgemeine Java-Themen 5
R HtmlUnit: Canvas als Bild speichern Allgemeine Java-Themen 0
E am häufigsten vorkommenden Farben aus einem Bild Allgemeine Java-Themen 5
S Bild in Raster Allgemeine Java-Themen 1
S Bild in Frame Allgemeine Java-Themen 0
F Punkte in einem Bild finden Allgemeine Java-Themen 10
A Bild aufteilen für getData Allgemeine Java-Themen 3
P Wie füge ich ein Bild in die GUI ein? Allgemeine Java-Themen 7
F ImageJ: Linien und Schnittpunkte in Bild Allgemeine Java-Themen 1
A mit getClassLoader Bild laden Allgemeine Java-Themen 8
E Bild abspeichern Allgemeine Java-Themen 5
D Face.com - Gesicht im Bild finden Allgemeine Java-Themen 3
N Input/Output Bild von WebSite laden? Allgemeine Java-Themen 3
A Input/Output Bild in Java einlesen und analysieren! Allgemeine Java-Themen 8
S programm um bild auszulesen Allgemeine Java-Themen 2
R Bild offenbar zu groß um geladen zu werden? Allgemeine Java-Themen 12
K Quadrat in einem Bild erkennen Allgemeine Java-Themen 33
B Bild verschieben Allgemeine Java-Themen 6
T Bild in jar Paket einbinden Allgemeine Java-Themen 9
D Bild Typ bestimmen Allgemeine Java-Themen 9
0 2D-Grafik Bild einfärben Allgemeine Java-Themen 8
A Bild zusammenbauen! Allgemeine Java-Themen 5
A Bild von Webcam aufzeichnen Allgemeine Java-Themen 14
V 2D-Grafik Bild transparent machen. Allgemeine Java-Themen 4
H Bild einscannen und speichern Allgemeine Java-Themen 29
E Bild mit Listener einfügen Allgemeine Java-Themen 3
B Bild in String einbauen? Allgemeine Java-Themen 3
C Bild auf HDD speichern Allgemeine Java-Themen 4
X Bild aus dem Netz von URL runterladen und in GUI einbinden. Allgemeine Java-Themen 3
F Bild (Point) mit scrollen lassen Allgemeine Java-Themen 5
R Texterkennung - Text aus einem/r Bild/Grafik auslesen Allgemeine Java-Themen 2
B Bild- und Texterkennung Allgemeine Java-Themen 4
S Tracing eines Bildes (a.ka. Bild vektorisieren)..? Allgemeine Java-Themen 2
destroflyer *.dds-Bild anzeigen Allgemeine Java-Themen 12
F Bild aus externer Quelle laden und Skalieren? Allgemeine Java-Themen 11
X Bild im Memory zwischen speichern Allgemeine Java-Themen 11
R JAI - RGB Bild in 3 Einzelbilder zerlegen Allgemeine Java-Themen 4
P Ascii Bild aus einem input file nur kommt nix im outputfile an?????? Allgemeine Java-Themen 5
A Möglichkeiten, ein Bild schnell auszuwerten Allgemeine Java-Themen 56
D Java Thread, Bild wird nur am Ende gezeichnet Allgemeine Java-Themen 5
data89 Barcodes in Bild erkennen Allgemeine Java-Themen 17
S Bild anhand von Koordinaten einteilen Allgemeine Java-Themen 7
K Transparente Bilder in Bild positionieren und speichern. Allgemeine Java-Themen 5
W Bild Spiegeln, aber Originalbild ausblenden Allgemeine Java-Themen 2
B Bild wird nicht angezeigt. Allgemeine Java-Themen 10
Developer_X Avatar/Bild ins Profil einbinden Allgemeine Java-Themen 10
C Bild in .txt speichern und wieder als Bild speichern Allgemeine Java-Themen 2
D Bild in text tabelle umwandeln Allgemeine Java-Themen 2
G bild in package Allgemeine Java-Themen 6
MQue bild zoomen Allgemeine Java-Themen 2
R Farbe im Bild ersetzen Allgemeine Java-Themen 11
R PDF einlesen und als Bild abspeichern Allgemeine Java-Themen 8
P Bild aus dem Internet speichern Allgemeine Java-Themen 4
K Schreiben von Bildern: Bild bleibt leer Allgemeine Java-Themen 7
ARadauer Bild verkleinern. Allgemeine Java-Themen 9
F Bild (File) komplett serialisieren Allgemeine Java-Themen 9
H Wie erstelle ich ein Bild ( GeoTIFF ) ? Allgemeine Java-Themen 2
Ark Bild immer als ARGB laden Allgemeine Java-Themen 2
N Hochgeladenes Bild verkleinern und speichern Allgemeine Java-Themen 2
N Graphics2D als Bild abspeichern Allgemeine Java-Themen 6
M bild verkleinern Allgemeine Java-Themen 9
MQue svg- Bild Allgemeine Java-Themen 34
S JPEG Bild übertragen mit RMI ? Allgemeine Java-Themen 4
V Wie kann ich ein Bild in einem Zip Archiv abspeichern? Allgemeine Java-Themen 3
ToNyXXL Als Mauszeiger eigenes Bild verwenden! Allgemeine Java-Themen 3
M bild erkennung Allgemeine Java-Themen 2
S Bild durchs Label laufen Allgemeine Java-Themen 14
T Bild verliert Inhalt. Allgemeine Java-Themen 6
T Icon -> Bild einladen Allgemeine Java-Themen 18
S Bild Größe verändern Allgemeine Java-Themen 2
R Bild flackert nach Java-Install - nur bei Laufschriften. Allgemeine Java-Themen 2
H Bild base64encode als String Allgemeine Java-Themen 9
S Bild aus Zwischenablage in Applet einfügen Allgemeine Java-Themen 2
T Ich bin unfähig ein Bild relativ zu addressieren ... Allgemeine Java-Themen 12
D JPEGEncoder -> Schwarz Weiß Bild Allgemeine Java-Themen 2
M Eingelesene Bild wird automatisch skaliert Allgemeine Java-Themen 4
R Bild wird trotz allem einfach nicht angezeigt. - AHHHHH!!!!! Allgemeine Java-Themen 30
R Bild downloaden und darstellen lassen Allgemeine Java-Themen 5
R Bild downloaden und dann Applet ausfüllen Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben