Hallo,
mal wieder ein Prob. hinter das ich nicht so ganz komm.
Möchte einfach ein Maus-Auswahlfenster auf ein JLabel bringen.
Funktioniert soweit auch alles mit zeichnen und co. nur der mouseDragged Event nicht.
Wenn ich es durch einen -Enter oder sonstigen Event austausch funktioniert es.
(Abgesehen Dragged und Move)
Eigentlich würde ich jetzt hier in der Konsole "zeichnen" erwarten, bzw. im zweiten Label die Koord.
Anbei der Code:
Achso, ich ahne schon das JLabel hier nicht unbedingt das allerbeste ist.
Das ist halt so gewachsen feif:
Wie immer schonmal dickes Danke
Gruß Grimnir
mal wieder ein Prob. hinter das ich nicht so ganz komm.
Möchte einfach ein Maus-Auswahlfenster auf ein JLabel bringen.
Funktioniert soweit auch alles mit zeichnen und co. nur der mouseDragged Event nicht.
Wenn ich es durch einen -Enter oder sonstigen Event austausch funktioniert es.
(Abgesehen Dragged und Move)
Eigentlich würde ich jetzt hier in der Konsole "zeichnen" erwarten, bzw. im zweiten Label die Koord.
Anbei der Code:
Java:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Point;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
import java.awt.geom.Point2D;
import java.awt.geom.Point2D.Double;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingConstants;
import javax.swing.border.LineBorder;
public class MeinAuswahlbild extends JFrame {
static Double clickkkoord1 ;
JLabel lblNewLabel;
Point dragSource;
Point dragTarget;
JPanel panel;
JLabel label;
ImageIcon icon;
BufferedImage image;
public MeinAuswahlbild () {
File file = new File ("HocherotischesBildEinerBesonderLiebreizendenDameWelcheGenauWieDiesesBildEinenVielzulangenNamenHat_Susi.png");
try {
this.image = ImageIO.read(file);
} catch (IOException ex) {
ex.printStackTrace();
}
icon = new ImageIcon(image);
label = new JLabel(icon);
label.setBorder(new LineBorder(Color.WHITE));
panel = new JPanel();
panel.setLayout(new BorderLayout());
panel.setBackground(Color.DARK_GRAY);
panel.add(label, BorderLayout.NORTH);
JPanel panel_1 = new JPanel();
panel_1.setLayout(new BorderLayout());
lblNewLabel = new JLabel();
lblNewLabel.setText(" ");
lblNewLabel.setVerticalAlignment(SwingConstants.BOTTOM);
lblNewLabel.setEnabled(false);
panel_1.add(lblNewLabel);
panel.add(panel_1);
getContentPane().add(panel);
int imageBreite = image.getWidth();
int imageHoehe = image.getHeight();
setBounds(700, 10, imageBreite , imageHoehe +60);
setResizable(false);
label.addMouseListener (new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
dragSource = new Point(e.getX(), e.getY());
int bildhöhe = label.getHeight();
int bildbreite = label.getWidth();
double skal = (12000.000/bildhöhe) ; //12000 ist sollwert in Natur
clickkkoord1 = new Point2D.Double ( ((e.getX()* skal) + 66000) ,
(((((e.getY() - bildhöhe )*-1))*skal) + 21000));
// lblNewLabel.setText(""+ clickkkoord1);
System.out.println(((Math.round((clickkkoord1.x)*1000))/1000.000));
}
public void mouseReleased(MouseEvent e) {
int bildhöhe = label.getHeight();
int bildbreite = label.getWidth();
double skal = (12000.000/bildhöhe); //12000 ist sollwert in Natur
Double clickkkoord2 = new Point2D.Double ( ((e.getX()* skal) + 66000) ,
(((((e.getY() - bildhöhe )*-1))*skal) + 21000));
// lblNewLabel.setText(clickkkoord1 + " \t\t"+ clickkkoord2);
System.out.println(clickkkoord2);
dragSource = null;
dragTarget = null;
}
public void mouseDragged (MouseEvent e) {
System.out.println("zeichen");
// Mein Problem
//Hier wird kein print wiedergegeben ????
// Sobald z.B ein mouseEntered verwendet wird funktioniert dies
dragTarget = new Point(e.getX(), e.getY());
//Hier wird kein label geändert ????
lblNewLabel.setText( dragTarget.toString() );
// repaint();
}
});
}
public static void main(String args[]) {
AufBildZeichnenClass cl = new AufBildZeichnenClass();
cl.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
cl.setVisible(true);
}
}
Achso, ich ahne schon das JLabel hier nicht unbedingt das allerbeste ist.
Das ist halt so gewachsen feif:
Wie immer schonmal dickes Danke
Gruß Grimnir