Bilder frei positionieren?

Status
Nicht offen für weitere Antworten.

manuche

Bekanntes Mitglied
Hallo!
Ich würde gerne in einem Frame Bilder bewegen können... also wie die Überschrift schon sagt frei positionieren!
Wo kann ich mich über so ein Thema informieren? Also ich hab für den Fall noch nichts handfestes gefunden...
Wenn's irgendwo Beispiele oder besser ein Tutorial o.ä. gibt dann her damit!
Ich bin auch für Beispiel Codeschnipsel oder sonstige Informationen dankbar!!
greetz
 

manuche

Bekanntes Mitglied
Und wie kann ich auf Buttondruck ein Bild auf meine JFrame laden? Also der buttondruck mit seinem Befehl wird nicht das Problem sein... nur das bild dann!
 

André Uhres

Top Contributor
manuche hat gesagt.:
Und wie kann ich auf Buttondruck ein Bild auf meine JFrame laden?..
Code:
Icon bild = new ImageIcon(path);
JLabel label = new JLabel(bild);
label.setBounds(50, 50, bild.getIconWidth(), bild.getIconHeight());
mainPanel.add(label);
mainPanel.repaint();
 

manuche

Bekanntes Mitglied
Also das klappt jetzt eigentlich soweit beides... wenn ich das bild lade und anfange zu bewegen ist das auch kein problem nur wenn ich die maustaste loslasse (egal wo) springt das bild zu einer bestimmten stelle! ich kanns mir zwar noch nehmen und bewegen solange ich mit der maus drauf klicke aber sobald ich die maustaste loslasse springt das bild auf die altbewehrte stelle... ich vermute, dass es am gridbaglayout liegt oder sowas...
Kann ich mir denn nicht einfach einen leeren Layer überalles legen, auf dem man das Bild platziert und bewegen kann?

Ich habs mal so versucht allerdings wird so kein bild mehr angezeigt...
Code:
final Container cp = getContentPane();
GridBagLayout gbl = new GridBagLayout();
cp.setLayout(gbl);
setExtendedState(MAXIMIZED_BOTH);
final JLayeredPane picLayer = new JLayeredPane();
picLayer.setVisible(true);
cp.add(picLayer);
picLayer.moveToFront(picLayer);
 

André Uhres

Top Contributor
Code:
mainPanel.setLayout(new GridBagLayout());
picPanel.setLayout(null);
picPanel.setSize(Toolkit.getDefaultToolkit().getScreenSize());
getContentPane().add(mainPanel, BorderLayout.CENTER);
picPanel.setOpaque(false);
getLayeredPane().add(picPanel, JLayeredPane.DRAG_LAYER);
setVisible(true);//make JFrame visible to getLocation of mainPanel
picPanel.setLocation(mainPanel.getLocation());
2: picPanel bekommt das Layout 'null' um die Bilder frei positionieren zu können.
3: picPanel bekommt seine Grösse.
4: Das ContentPane vom JFrame bekommt das mainPanel im Zentrum vom BorderLayout (das ist das standard Layout vom JFrame)
5: picPanel machen wir durchsichtig (= nicht 'opaque'), damit wir drunter das mainPanel sehen können.
6: picPanel kommt ins DRAG_LAYER vom JFrame.
7: Wir machen JFrame erstmal sichtbar, um danach an die Location von mainPanel ranzukommen.
8: picPanel bekommt die Location vom mainPanel, dann liegt es genau drüber.
 

manuche

Bekanntes Mitglied
Immer diese aussagekräftigen Posts...
Mag ja sein, dass es funktioniert aber ich würde das ganze gerne lernen deswegen wären ein paar Worte nicht schlecht ;)
Ansonsten frag ich das nächste mal wieder bei so nem Problem xD
Naja ich werds ausprobieren!
 

manuche

Bekanntes Mitglied
Also wie folgt funktioniert es schonmal nicht:
Code:
//Frame Initialisierung
this.setLocation(0, 0);
this.setSize(500, 500);
final Container cp = this.getContentPane();
GridBagLayout gbl = new GridBagLayout();
cp.setLayout(gbl);
this.setExtendedState(MAXIMIZED_BOTH);
	    
final JPanel picPanel = new JPanel();
picPanel.setLayout(null); 
picPanel.setSize(Toolkit.getDefaultToolkit().getScreenSize()); 
//getContentPane().add(cp, BorderLayout.CENTER); 
picPanel.setOpaque(false);
setVisible(true);
picPanel.setLocation(cp.getLocation());
getLayeredPane().add(picPanel, JLayeredPane.DRAG_LAYER);
...
Code:
//Bild laden
tBGraphic.addActionListener(new ActionListener(){
  public void actionPerformed(ActionEvent e){
    File picFile = funcOpen("Grafik");
    if (picFile != null){
      Icon bild = new ImageIcon(picFile.toString()); 
      JLabel label = new JLabel(bild); 
      label.setBounds(50, 50, bild.getIconWidth(), bild.getIconHeight()); 
      picPanel.add(label); 
      picPanel.repaint();
    }
  }
});
Code:
//Mouselisteners
    private void mainPanelMousePressed(final MouseEvent evt) {
        Component c = picPanel.getComponentAt(evt.getPoint());
        if (c instanceof JLabel) {
            hitLabel = (JLabel) c;
            hitLabel.setBorder(new BevelBorder(BevelBorder.RAISED));
            deltaX = evt.getX() - hitLabel.getX();
            deltaY = evt.getY() - hitLabel.getY();
        }
    }
    
    private void mainPanelMouseDragged(final MouseEvent evt) {
        if (hitLabel != null) {
            int x = evt.getX() - deltaX;
            int y = evt.getY() - deltaY;
            hitLabel.setLocation(x, y);
            picPanel.setComponentZOrder(hitLabel, 0);// JDK 1.5
            picPanel.repaint();
        }
    }
    
    private void mainPanelMouseReleased(final MouseEvent evt) {
        if( hitLabel != null ){
            hitLabel.setBorder(null);
            picPanel.repaint();
            hitLabel = null;
        }
    }

Folgende Fehlermeldung:
java.lang.StackOverflowError
Mehr nicht...

Es hat auf jeden Fall was mit dem picPanel zu tun aber ich weiss nicht wirklich was... "picPanel cannot be resolved"
aha!?

Ich hab das Gefühl dass es nicht so ganz mit dem Container hinhaut.... Sonst hab ich nur noch nen ScrollPane an meinem TextPane...
 

André Uhres

Top Contributor
Code:
//Frame Initialisierung
this.setLocation(0, 0);
this.setSize(500, 500);
final Container cp = this.getContentPane();
GridBagLayout gbl = new GridBagLayout();
//cp.setLayout(gbl);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setExtendedState(MAXIMIZED_BOTH);
      
mainPanel = new JPanel(gbl);
picPanel = new JPanel();
picPanel.setLayout(null);
picPanel.setSize(Toolkit.getDefaultToolkit().getScreenSize());
//getContentPane().add(cp, BorderLayout.CENTER);
cp.add(mainPanel, BorderLayout.CENTER); 
picPanel.setOpaque(false);
getLayeredPane().add(picPanel, JLayeredPane.DRAG_LAYER);     
tBGraphic = new JButton("Bild laden");
cp.add(tBGraphic, BorderLayout.NORTH);
setVisible(true);        
picPanel.setLocation(mainPanel.getLocation());
Erläuterungen: siehe weiter oben.
Wichtig ist ausserdem, dass nach dem setVisible keine GUI Komponenten mehr hinzukommen.

Angenommen, du hast im mainPanel hinter dem picPanel noch einen Button (oder JScrollPane), den du benutzen möchtest.
Um diesen mit der Maus betätigen zu können, kannst du in deinen 'mousePressed' und 'mouseReleased'
Methoden zum Schluss jeweils noch diese Methode aufrufen:
Code:
   private void redispatchMouseEvent(MouseEvent e) {
        Point mousePoint = e.getPoint();
        Point containerPoint = SwingUtilities.convertPoint(picPanel,
                mousePoint, getContentPane());
        //Finde heraus über welcher Komponente die Maus sich befindet:
        Component component =
                SwingUtilities.getDeepestComponentAt(getContentPane(),
                containerPoint.x, containerPoint.y);
        if ( component != null ) {
            //Events an den Button weitergeben:
            Point componentPoint = SwingUtilities.convertPoint(picPanel,
                    mousePoint, component);
            component.dispatchEvent(new MouseEvent(component,
                    e.getID(), e.getWhen(), e.getModifiers(),
                    componentPoint.x, componentPoint.y,
                    e.getClickCount(), e.isPopupTrigger()));
        }
    }
Dann werden die MouseEvents an den Button weitergegeben und der Button (oder JScrollPane) funktioniert ganz normal :wink:
 

manuche

Bekanntes Mitglied
Also ich habs jetzt probiert und das ganze will einfach nicht funktionieren... Eclipse sagt mir, dass das picPanel (bei Aufruf im MouseListener) nicht resolved werden kann! Irgendwie komisch! Das mit den Layouts gefällt mir auch irgendwie nicht weil ich ja schon nen GridBagLayout habe und überhaupt xD
Hier mal der komplette unzensierte Quelltext:
Code:
import java.awt.*;
import java.awt.event.*;
import java.io.File;
import javax.swing.*;
import javax.swing.border.BevelBorder;
public class Programm extends JFrame {
  // Anfang Variablen
  // Ende Variablen
    private static final long serialVersionUID = 1L;
	
    private GridBagLayout layout = new GridBagLayout();
    private JScrollPane textPane = new JScrollPane();
    private JMenuBar barMenu = new JMenuBar();
    private JMenu mBFile = new JMenu("Datei");
    private JMenuItem mIOpen = new JMenuItem("Öffnen");
    private JMenuItem mISave = new JMenuItem("Speichern");
    private JMenuItem mISaveAs = new JMenuItem("Speichern als");
    private JMenuItem mIExit = new JMenuItem("Beenden");
    private JMenu mBEdit = new JMenu("Bearbeiten");
    private JMenuItem mIMark = new JMenuItem("Markieren");
    private JMenuItem mICopy = new JMenuItem("Kopieren");
    private JMenuItem mICut = new JMenuItem("Ausschneiden");
    private JMenuItem mIPaste = new JMenuItem("Einfügen");
    private JMenu mBHelp = new JMenu("Hilfe");
    private JMenuItem mIInfo = new JMenuItem("Info");
    private JMenuItem mIHelpsec = new JMenuItem("Hilfe");
    private JToolBar barTools = new JToolBar();
    private JButton tBSave = new JButton("picS");
    private JButton tBOpen = new JButton("picO");
    private JButton tBGraphic = new JButton("picG");
    private JButton tBBold = new JButton("picB");
    private JButton tBItalic = new JButton("picI");
    private JButton tBUnderlined = new JButton("picU");
    private JComboBox cboFontChooser = new JComboBox();
    private JComboBox cboFontSizeChooser = new JComboBox();
    private JTextPane textArea = new JTextPane();
    private JLabel hitLabel;
    
    private Dimension dimFontSizeChooser = new Dimension();
    private Dimension dimFontChooser = new Dimension();
    private String[] fonts = {"Serif", "Arial", "SanfSerif", "Monospaced", "Dialog", "DialogInput"};
    private String[] fontSizes = {"8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25"};
    private int deltaX, deltaY;

    public Programmc(String title) {
	    // Frame-Initialisierung
	    super(title);
	    this.addWindowListener(new WindowAdapter() {
	      public void windowClosing(WindowEvent evt) { System.exit(0); }
	    });
	    this.setLocation(0, 0); 
	    this.setSize(500, 500); 
	    final Container cp = this.getContentPane(); 
	    GridBagLayout gbl = new GridBagLayout(); 
	    //cp.setLayout(gbl); 
	    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
	    this.setExtendedState(MAXIMIZED_BOTH); 
	          
	    JPanel mainPanel = new JPanel(gbl); 
	    JPanel picPanel = new JPanel(); 
	    picPanel.setLayout(null); 
	    picPanel.setSize(Toolkit.getDefaultToolkit().getScreenSize()); 
	    //getContentPane().add(cp, BorderLayout.CENTER); 
	    cp.add(mainPanel, BorderLayout.CENTER); 
	    picPanel.setOpaque(false); 
	    this.getLayeredPane().add(picPanel, JLayeredPane.DRAG_LAYER);      
	    tBGraphic = new JButton("Bild laden"); 
	    cp.add(tBGraphic, BorderLayout.NORTH); 
	    //this.setVisible(true);        
	    picPanel.setLocation(mainPanel.getLocation());
	    
	    
	    
        cp.addMouseMotionListener(new MouseMotionAdapter() {
            public void mouseDragged(final MouseEvent evt) {
                mouseDragged(evt);
            }
        });
        cp.addMouseListener(new MouseAdapter() {
            public void mousePressed(final MouseEvent evt) {
                mousePressed(evt);
            }
            public void mouseReleased(final MouseEvent evt) {
                mouseReleased(evt);
            }
        });
	    
	    // Anfang Komponenten
	    this.setJMenuBar(barMenu);
	    barMenu.add(mBFile);
	    barMenu.add(mBEdit);
	    barMenu.add(mBHelp);
	    cp.add(barTools);
	    barTools.setFloatable(false);
	    barTools.setSize(Toolkit.getDefaultToolkit().getScreenSize().width, 30);
	    	    	    
	    mBFile.add(mIOpen);  
	    mIOpen.addActionListener(new ActionListener(){
    		public void actionPerformed(ActionEvent e){
    			//
    		}
    	});
	    mBFile.add(mISave);
	    mISave.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				//
			}
		});
	    mBFile.add(mISaveAs);
	    mISaveAs.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				//
			}
		});
	    mBFile.add(mIExit);
	    mIExit.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				//
			}
		});
	    mBEdit.add(mIMark); 
		mIMark.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				//
			}
		});
		mBEdit.add(mICopy);
		mICopy.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				//
			}
		});
		mBEdit.add(mICut);
		mICut.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				//
			}
		});
		mBEdit.add(mIPaste);
		mIPaste.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				//
			}
		});
		mBHelp.add(mIInfo);
		mIInfo.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				//
			}
		});
		mBHelp.add(mIHelpsec);
		mIHelpsec.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				//
			}
		});
	    
		barTools.add(tBSave);
		tBSave.setFocusable(false);
		tBSave.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				//
			}
		});
	    barTools.add(tBOpen);
	    tBOpen.setFocusable(false);
	    tBOpen.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				//
			}
		});
	    barTools.add(tBGraphic);
	    tBGraphic.setFocusable(false);
	    tBGraphic.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				File picFile = funcOpen("Grafik");
				if (picFile != null){
					Icon bild = new ImageIcon(picFile.toString()); 
					JLabel label = new JLabel(bild); 
					label.setBounds(50, 50, bild.getIconWidth(), bild.getIconHeight());
					cp.add(label);
					cp.repaint();
					//picPanel.add(label); 
					//picPanel.repaint();
				}
			}
		});
	    barTools.add(cboFontSizeChooser);
	    cboFontSizeChooser.setFocusable(false);
	    dimFontSizeChooser.width = 50;
	    dimFontSizeChooser.height = 30;
	    cboFontSizeChooser.setMaximumSize(dimFontSizeChooser);
	    for (int a = 0; a < fontSizes.length; a++){
	    	cboFontSizeChooser.addItem(fontSizes[a]);
	    }
	    cboFontSizeChooser.setSelectedIndex(7);
	    cboFontSizeChooser.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				//
			}
		});
	    barTools.add(cboFontChooser);
	    cboFontChooser.setFocusable(false);
	    dimFontChooser.width = 100;
	    dimFontChooser.height = 30;
	    cboFontChooser.setMaximumSize(dimFontChooser);
	    for (int a = 0; a < fonts.length; a++){
	    	cboFontChooser.addItem(fonts[a]);
	    }
	    cboFontChooser.setSelectedIndex(1);
	    cboFontChooser.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				//
			}
		});
	    barTools.add(tBBold);
	    tBBold.setFocusable(false);
	    tBBold.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				//
			}
		});
	    barTools.add(tBItalic);
	    tBItalic.setFocusable(false);
	    tBItalic.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				//
			}
		});
	    barTools.add(tBUnderlined);
	    tBUnderlined.setFocusable(false);
	    tBUnderlined.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				//
			}
		});
	    
	    this.getContentPane().setLayout(layout);
	    textPane.getViewport().add(textArea);
	    
	    this.getContentPane().add(barTools, new GridBagConstraints(0, 0, 1, 1, 1.0, 0.0,
	               GridBagConstraints.NORTH, GridBagConstraints.HORIZONTAL, new Insets(0, 0, 0, 0), 0, 0));
	    this.getContentPane().add(textPane, new GridBagConstraints(0, 1, 1, 1, 1.0, 1.0,
	               GridBagConstraints.NORTH, GridBagConstraints.NONE, new Insets(40, 0, 0, 0), 500, 700));
		// Ende Komponenten
	    
	    this.setResizable(true);
	    this.setVisible(true);
    }

  // Anfang Ereignisprozeduren
    public void mousePressed(final MouseEvent evt) {
        Component c = picPanel.getComponentAt(evt.getPoint());
        if (c instanceof JLabel) {
            hitLabel = (JLabel) c;
            hitLabel.setBorder(new BevelBorder(BevelBorder.RAISED));
            deltaX = evt.getX() - hitLabel.getX();
            deltaY = evt.getY() - hitLabel.getY();
        }
    }
    
    public void mouseDragged(final MouseEvent evt) {
        if (hitLabel != null) {
            int x = evt.getX() - deltaX;
            int y = evt.getY() - deltaY;
            hitLabel.setLocation(x, y);
            picPanel.setComponentZOrder(hitLabel, 0);// JDK 1.5
            picPanel.repaint();
        }
    }
    
    public void mouseReleased(final MouseEvent evt) {
        if( hitLabel != null ){
            hitLabel.setBorder(null);
            picPanel.repaint();
            hitLabel = null;
        }
    }
    
    public File funcOpen(String dateiTyp) {
    	JFileChooser dlgOpen = new JFileChooser();
        dlgOpen.setDialogTitle("Öffne " + dateiTyp);
        if (dlgOpen.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) {
          return dlgOpen.getSelectedFile();
        }else{
    	  return null;
        }
    }
  // Ende Ereignisprozeduren

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

Ich würde ja auch gerne die Fehlermeldung zeigen aber sobald ich versuche das Bild zu bewegen kommt folgende Fehlermeldung
at LessonDoc$2.mouseDragged(LessonDoc.java:99)
so schnell nacheinander dass ich den Anfang nicht mitbekomme
(zeile 99 ist bei mir der Aufruf von mouseDragged(evt) im MouseListener also 79)...

*edit: Es ist ein StackOverflowError bei den Listenern... Aber warum???
 

André Uhres

Top Contributor
Code:
/*
 * Die Aenderungen hab ich mit //uhrand markiert und kommentiert
 */
import java.awt.*;
import java.awt.event.*;
import java.io.File;
import javax.swing.*;
import javax.swing.border.BevelBorder;
public class Programm extends JFrame {
  // Anfang Variablen
  // Ende Variablen
    private static final long serialVersionUID = 1L;
   
    private GridBagLayout layout = new GridBagLayout();
    private JScrollPane textPane = new JScrollPane();
    private JMenuBar barMenu = new JMenuBar();
    private JMenu mBFile = new JMenu("Datei");
    private JMenuItem mIOpen = new JMenuItem("Öffnen");
    private JMenuItem mISave = new JMenuItem("Speichern");
    private JMenuItem mISaveAs = new JMenuItem("Speichern als");
    private JMenuItem mIExit = new JMenuItem("Beenden");
    private JMenu mBEdit = new JMenu("Bearbeiten");
    private JMenuItem mIMark = new JMenuItem("Markieren");
    private JMenuItem mICopy = new JMenuItem("Kopieren");
    private JMenuItem mICut = new JMenuItem("Ausschneiden");
    private JMenuItem mIPaste = new JMenuItem("Einfügen");
    private JMenu mBHelp = new JMenu("Hilfe");
    private JMenuItem mIInfo = new JMenuItem("Info");
    private JMenuItem mIHelpsec = new JMenuItem("Hilfe");
    private JToolBar barTools = new JToolBar();
    private JButton tBSave = new JButton("picS");
    private JButton tBOpen = new JButton("picO");
    private JButton tBGraphic = new JButton("picG");
    private JButton tBBold = new JButton("picB");
    private JButton tBItalic = new JButton("picI");
    private JButton tBUnderlined = new JButton("picU");
    private JComboBox cboFontChooser = new JComboBox();
    private JComboBox cboFontSizeChooser = new JComboBox();
    private JTextPane textArea = new JTextPane();
    private JLabel hitLabel;
   
    private Dimension dimFontSizeChooser = new Dimension();
    private Dimension dimFontChooser = new Dimension();
    private String[] fonts = {"Serif", "Arial", "SanfSerif", "Monospaced", "Dialog", "DialogInput"};
    private String[] fontSizes = {"8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25"};
    private int deltaX, deltaY;
    private JPanel picPanel;//uhrand
    private JPanel mainPanel;//uhrand

    public Programm(String title) {//uhrand
       // Frame-Initialisierung
       super(title);
       this.addWindowListener(new WindowAdapter() {
            @Override
         public void windowClosing(WindowEvent evt) { System.exit(0); }
       });
       this.setLocation(0, 0);
       this.setSize(500, 500);
       final Container cp = this.getContentPane();
       GridBagLayout gbl = new GridBagLayout();
       //cp.setLayout(gbl);
//       setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //uhrand (überflüssig wegen windowClosing)
       this.setExtendedState(MAXIMIZED_BOTH);
            
       mainPanel = new JPanel(gbl);//uhrand
       picPanel = new JPanel();//uhrand
       picPanel.setLayout(null);
       picPanel.setSize(Toolkit.getDefaultToolkit().getScreenSize());
       //getContentPane().add(cp, BorderLayout.CENTER);
       cp.add(mainPanel, BorderLayout.CENTER);
       picPanel.setOpaque(false);
       this.getLayeredPane().add(picPanel, JLayeredPane.DRAG_LAYER);     
//       tBGraphic = new JButton("Bild laden");//uhrand (überflüssig)
//       cp.add(tBGraphic, BorderLayout.NORTH);//uhrand (überflüssig)
       //this.setVisible(true);       
//       picPanel.setLocation(mainPanel.getLocation());//uhrand (ist jetzt am Schluss vom Konstruktor)
       
        picPanel.addMouseMotionListener(new MouseMotionAdapter() {//uhrand
            @Override
            public void mouseDragged(final MouseEvent evt) {
                Programm.this.mouseDragged(evt);//uhrand (hier entstand der stackoverflow)
            }
        });
        picPanel.addMouseListener(new MouseAdapter() {//uhrand
            @Override
            public void mousePressed(final MouseEvent evt) {
                Programm.this.mousePressed(evt);//uhrand
            }
            @Override
            public void mouseReleased(final MouseEvent evt) {
                Programm.this.mouseReleased(evt);//uhrand
            }
        });
      
       // Anfang Komponenten
       this.setJMenuBar(barMenu);
       barMenu.add(mBFile);
       barMenu.add(mBEdit);
       barMenu.add(mBHelp);
       cp.add(barTools, BorderLayout.NORTH);//uhrand
       barTools.setFloatable(false);
       barTools.setSize(Toolkit.getDefaultToolkit().getScreenSize().width, 30);
                    
       mBFile.add(mIOpen); 
       mIOpen.addActionListener(new ActionListener(){
          public void actionPerformed(ActionEvent e){
             //
          }
       });
       mBFile.add(mISave);
       mISave.addActionListener(new ActionListener(){
         public void actionPerformed(ActionEvent e){
            //
         }
      });
       mBFile.add(mISaveAs);
       mISaveAs.addActionListener(new ActionListener(){
         public void actionPerformed(ActionEvent e){
            //
         }
      });
       mBFile.add(mIExit);
       mIExit.addActionListener(new ActionListener(){
         public void actionPerformed(ActionEvent e){
            //
         }
      });
       mBEdit.add(mIMark);
      mIMark.addActionListener(new ActionListener(){
         public void actionPerformed(ActionEvent e){
            //
         }
      });
      mBEdit.add(mICopy);
      mICopy.addActionListener(new ActionListener(){
         public void actionPerformed(ActionEvent e){
            //
         }
      });
      mBEdit.add(mICut);
      mICut.addActionListener(new ActionListener(){
         public void actionPerformed(ActionEvent e){
            //
         }
      });
      mBEdit.add(mIPaste);
      mIPaste.addActionListener(new ActionListener(){
         public void actionPerformed(ActionEvent e){
            //
         }
      });
      mBHelp.add(mIInfo);
      mIInfo.addActionListener(new ActionListener(){
         public void actionPerformed(ActionEvent e){
            //
         }
      });
      mBHelp.add(mIHelpsec);
      mIHelpsec.addActionListener(new ActionListener(){
         public void actionPerformed(ActionEvent e){
            //
         }
      });
      
      barTools.add(tBSave);
      tBSave.setFocusable(false);
      tBSave.addActionListener(new ActionListener(){
         public void actionPerformed(ActionEvent e){
            //
         }
      });
       barTools.add(tBOpen);
       tBOpen.setFocusable(false);
       tBOpen.addActionListener(new ActionListener(){
         public void actionPerformed(ActionEvent e){
            //
         }
      });
       barTools.add(tBGraphic);
       tBGraphic.setFocusable(false);
       tBGraphic.addActionListener(new ActionListener(){
         public void actionPerformed(ActionEvent e){
            File picFile = funcOpen("Grafik");
            if (picFile != null){
               Icon bild = new ImageIcon(picFile.toString());
               JLabel label = new JLabel(bild);
               label.setBounds(50, 50, bild.getIconWidth(), bild.getIconHeight());
               picPanel.add(label);//uhrand
               picPanel.repaint();//uhrand
            }
         }
      });
       barTools.add(cboFontSizeChooser);
       cboFontSizeChooser.setFocusable(false);
       dimFontSizeChooser.width = 50;
       dimFontSizeChooser.height = 30;
       cboFontSizeChooser.setMaximumSize(dimFontSizeChooser);
       for (int a = 0; a < fontSizes.length; a++){
          cboFontSizeChooser.addItem(fontSizes[a]);
       }
       cboFontSizeChooser.setSelectedIndex(7);
       cboFontSizeChooser.addActionListener(new ActionListener(){
         public void actionPerformed(ActionEvent e){
            //
         }
      });
       barTools.add(cboFontChooser);
       cboFontChooser.setFocusable(false);
       dimFontChooser.width = 100;
       dimFontChooser.height = 30;
       cboFontChooser.setMaximumSize(dimFontChooser);
       for (int a = 0; a < fonts.length; a++){
          cboFontChooser.addItem(fonts[a]);
       }
       cboFontChooser.setSelectedIndex(1);
       cboFontChooser.addActionListener(new ActionListener(){
         public void actionPerformed(ActionEvent e){
            //
         }
      });
       barTools.add(tBBold);
       tBBold.setFocusable(false);
       tBBold.addActionListener(new ActionListener(){
         public void actionPerformed(ActionEvent e){
            //
         }
      });
       barTools.add(tBItalic);
       tBItalic.setFocusable(false);
       tBItalic.addActionListener(new ActionListener(){
         public void actionPerformed(ActionEvent e){
            //
         }
      });
       barTools.add(tBUnderlined);
       tBUnderlined.setFocusable(false);
       tBUnderlined.addActionListener(new ActionListener(){
         public void actionPerformed(ActionEvent e){
            //
         }
      });
      
//       this.getContentPane().setLayout(layout);//uhrand
       textPane.getViewport().add(textArea);
      
//       this.getContentPane().add(barTools, new GridBagConstraints(0, 0, 1, 1, 1.0, 0.0,//uhrand
//                  GridBagConstraints.NORTH, GridBagConstraints.HORIZONTAL, new Insets(0, 0, 0, 0), 0, 0));//uhrand
       mainPanel.add(textPane, new GridBagConstraints(0, 1, 1, 1, 1.0, 1.0,//uhrand
                  GridBagConstraints.NORTH, GridBagConstraints.NONE, new Insets(40, 0, 0, 0), 500, 700));
      // Ende Komponenten
      
       this.setResizable(true);
       this.setVisible(true);
       //wegen der JMenuBar wird der setLocation ein wenig komplizierter:  //uhrand
       picPanel.setLocation(mainPanel.getLocation().x, mainPanel.getLocation().y+barMenu.getHeight());//uhrand
       
    }

  // Anfang Ereignisprozeduren
    public void mousePressed(final MouseEvent evt) {
        Component c = picPanel.getComponentAt(evt.getPoint());
        if (c instanceof JLabel) {
            hitLabel = (JLabel) c;
            hitLabel.setBorder(new BevelBorder(BevelBorder.RAISED));
            deltaX = evt.getX() - hitLabel.getX();
            deltaY = evt.getY() - hitLabel.getY();
        }
    }
   
    public void mouseDragged(final MouseEvent evt) {
        if (hitLabel != null) {
            int x = evt.getX() - deltaX;
            int y = evt.getY() - deltaY;
            hitLabel.setLocation(x, y);
            picPanel.setComponentZOrder(hitLabel, 0);// JDK 1.5
            hitLabel.repaint();//uhrand (verbessert die Performance gegenüber picPanel.repaint)
        }
    }
   
    public void mouseReleased(final MouseEvent evt) {
        if( hitLabel != null ){
            hitLabel.setBorder(null);
            picPanel.repaint();
            hitLabel = null;
        }
    }
   
    public File funcOpen(String dateiTyp) {
       JFileChooser dlgOpen = new JFileChooser();
        dlgOpen.setDialogTitle("Öffne " + dateiTyp);
        if (dlgOpen.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) {
          return dlgOpen.getSelectedFile();
        }else{
         return null;
        }
    }
  // Ende Ereignisprozeduren

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

manuche

Bekanntes Mitglied
Also zumindest gibts jetzt keinen StackOverflow mehr...
Wenn ich mir jetzt ein Bild schnappe und es bewegen ist das auch kein Problem! erstmal....
sobald ich das bild loslasse schiebt es sich überhalb der textPanes!!!
Also TextPane wird nach unten verschoben und das panel mit dem bild setzt sich mittig drüber direkt unterhalb der Toolbar... Danach kann ich es auch nicht mehr verschieben...

*edit: also ich hab in dem quelltext den du gepostet hast mal die zeile 275 entfernt und kann nun das bild frei bewegen... einziges manko (sorry ist schwer zu erklären): wenn das bild teils auf dem textpane liegt und ich es mit der maus "greifen" will funktioniert das nur, wenn ich das bild außerhalb der textPanes "greife"....
Sobald die Maus überhalb des textPanes ist (obwohl das bild darüber liegt) kann ich das bild nicht verschieben!
ich hoffe du/ihr könnt mich jetzt nachvollziehen ;)
 

André Uhres

Top Contributor
> sobald ich das bild loslasse schiebt es sich überhalb der textPanes!!!
:noe: Bild ist in picPanel mit Nullayout, ein selbsttätiges Verschieben daher unmöglich

>Also TextPane wird nach unten verschoben und das panel mit dem bild setzt sich mittig drüber
:noe: das ist unmöglich, weil TextPane ist in mainPanel und Bild in picPanel (verschiedene Layer!)

> mal die zeile 275 entfernt
Diese Zeile sorgt lediglich dafür, dass das zu verschiebende Bild oben ist (bei mehreren Bildern) :wink:

> wenn das bild teils auf dem textpane liegt und ich es mit der maus "greifen" will funktioniert das nur,
> wenn ich das bild außerhalb der textPanes "greife"....
> Sobald die Maus überhalb des textPanes ist (obwohl das bild darüber liegt) kann ich das bild nicht verschieben!
:noe: Nochmal: das ist unmöglich, weil TextPane ist in mainPanel und Bild in picPanel (verschiedene Layer!)

Fazit: bitte überprüf nochmal, ob du meine Änderungen richtig übernommen hast :wink:
(oder einfacher: kopier meinen Quellcode wie er ist)
 

manuche

Bekanntes Mitglied
Ok ich gebe zu: ich muss geschlampt haben... Jetzt geht das ganze ganz gut....
So geil ich das auch finde mit dem Bilder verschieben aber irgendwie zerfrisst das ganze nen bisschen das Layout!
Zum Beispiel wird das textPane (bzw scrollPane) breiter wenn bereits ein Text drin steht und ich ein Bilder über das TextPane schiebe.... Woran kann das liegen? Soweit wie ich das jetzt verstanden hab ist es doch quasi ein anderer Layer also völlig unabhängig, oder etwa nicht???

*edit: Nochwas ist mir aufgefallen: Wenn die Menüleiste aufgeklappt ist komme ich nicht an die Optionen dran, die auf dem maiPanel bzw picPanel liegen... :( Also kein Mouseover und kein MouseEvent
 

André Uhres

Top Contributor
manuche hat gesagt.:
..Zum Beispiel wird das textPane (bzw scrollPane) breiter wenn bereits ein Text drin steht
und ich ein Bilder über das TextPane schiebe.... Woran kann das liegen?
Versuch nochmal meinem Code zu kopieren (und nicht verändern).
Das kann dich nicht so schwer sein :wink:

manuche hat gesagt.:
..Soweit wie ich das jetzt verstanden hab ist es doch quasi ein anderer Layer also föllig unabhängig..
Richtig :applaus:
 

manuche

Bekanntes Mitglied
André Uhres hat gesagt.:
Versuch nochmal meinem Code zu kopieren (und nicht verändern).
Das kann dich nicht so schwer sein :wink:

^^ Ich hab mit deinem Quellcode weiter gearbeitet... Probiers selbst mal aus! Wenn ich Text einfüge (meinetwegen 20 Zeichen aber das ist eigentlich egal) wird das ScrollPane/TextPane um die breite der Zeichenkette verbreitert...
Hab's auch nochmal mit deinem "puren" Quelltext ausprobiert! Liegt also nich daran dass ich weiter dran gearbeitet hab!
komisch das ganze... *seufz* ;)

*edit: ich hab mal bei den funktionene mousedragged und mousepressed geschaut und direkt wenns in die funktion geht sind schon die neuen werte vorhanden also kann es jawohl kaum am MouseListener liegen oder?
 

André Uhres

Top Contributor
Damit die Menüs funktionieren, musst du nach "super(title);"
einfach diese Anweisung einfügen:
Code:
JPopupMenu.setDefaultLightWeightPopupEnabled(false);
Die Breite von ScrollPane/TextPane ändert sich bei mir nicht.
Wenn es der Fall sein sollte, dann kann as kaum etwas mit unserem picPanel Layer zu tun haben.
Welche Java Version hast du? Ich habe 1.6.0_03
Du kannst dir die Version ausdrucken lasse mit:
Code:
System.out.println(System.getProperty("java.version"));
Ändert die Breite nur wenn ein Bild da ist?
 

manuche

Bekanntes Mitglied
Java JRE: 1.5.0_13

> Ändert die Breite nur wenn ein Bild da ist?
Ja! Und nur dann wenn ich auf das Bild klicke... Also das Bild laden alleine macht noch nichts aus!
Sonst garnich außer ich änder die größe des JFrames ;)

> JPopupMenu.setDefaultLightWeightPopupEnabled(false);
Funktioniert! Zumindest bei dem Menü... Allerdings komme ich mit deiner Methode redispatchMouseEvent(MouseEvent e) nicht an die ScrollBars etc....
Ich hab die Methode direkt am Ende in den Methoden Programm.this.mousePressed(...) und Programm.this.mouseReleased(...) aufgerufen!

Kann man den Spieß nicht umdrehen, sodass ich eigentlich auf dem mainPanel arbeite und sobald ich ein Bild anklicke, dass sogesehen einen Layer drüber ist bearbeiten bzw verschieben kann???
 

André Uhres

Top Contributor
>Ich hab die Methode direkt am Ende in den Methoden Programm.this.mousePressed(...) und
> Programm.this.mouseReleased(...) aufgerufen!
Für ScrollPane muss du die natürlich auch in mouseDragged aufrufen :wink:

Ich hab's auch mit Java JRE: 1.5.0_13 versucht: gleiches Ergebnis,
egal was ich mache, TextPane Breite bleibt unverändert

>Kann man den Spieß nicht umdrehen, sodass ich eigentlich auf dem mainPanel arbeite
>und sobald ich ein Bild anklicke, dass sogesehen einen Layer drüber ist
>bearbeiten bzw verschieben kann?
Das Problem ist eben, dass das Bild immer in einem Layer drüber ist.
Wenn das Bild im mainPanel wäre, dann wäre die Situation wieder anders.
Aber das geht ja nicht wegen dem Layout.
 

manuche

Bekanntes Mitglied
Dann hab ich keine Ahnung... Also wie gesagt! Mit dem "Urquelltext" xD hab ich's probiert da ist genau das gleiche los!
Ich gehe wie folgt vor:
- ein paar buschstaben eintippen....
- bild einfügen
- bild draggen

dann verzieht sich das Pane! btw anderrum gehts auch! wenn ich die zeichen lösche verkleinert sich das pane auch ^^
 

manuche

Bekanntes Mitglied
Ich schreibe eine Art WordPad für den Schulunterricht...
Im Unterricht braucht man manchmal Pfeile um auf andere Notizen zu verweisen etc.
Das soll nachher mit Hilfe von Bilder (Pfeile usw) geschehen können!
 

André Uhres

Top Contributor
manuche hat gesagt.:
Ich schreibe eine Art WordPad für den Schulunterricht...
Im Unterricht braucht man manchmal Pfeile um auf andere Notizen zu verweisen etc.
Das soll nachher mit Hilfe von Bilder (Pfeile usw) geschehen können!
Ich glaube, dann sind wir im falschen Film: die Pfeile/Zeichen gehören ja dann in die JTextPane und nicht drüber :shock:
 

manuche

Bekanntes Mitglied
Naja ist das jetzt so das Problem? Ich bin davon ausgeganben, dass Bilder überhaupt garnicht in ein TextPane können.. :D
Deswegen hab ich sie drüber gelegt weil das ja für den betrachter den gleichen Effekt hat!!!
 

André Uhres

Top Contributor
manuche hat gesagt.:
Naja ist das jetzt so das Problem? Ich bin davon ausgeganben, dass Bilder überhaupt garnicht in ein TextPane können.. :D
Deswegen hab ich sie drüber gelegt weil das ja für den betrachter den gleichen Effekt hat!!!
Du willst das Dokument aber sicher auch abspeichern.
Dann ist es wesentlich einfacher, wenn alles drin ist :wink:
 

manuche

Bekanntes Mitglied
naja ich bin jetzt eigentlich nicht davon ausgegangen, dass das geht... -.-
Ich bin grad dabei nen Script zu schreiben, das aus dem picPanel die JLabels und dazugehörigen Bilder erkennt, koordinaten abgreift und in eine seperate zeile im dokument zu schreiben...
aber wenn du weisst wies besser funktioniert dann raus mit der sprache!!!! ;)
 

manuche

Bekanntes Mitglied
Ich hab mal nen bisschen gestöbert...
Es gibt ja TextPanes, TextAreas und EditorPanes....
Würde sich eine TextArea denn am besten für sowas eignen?
Vor allen Dingen wie sieht es mit den Bildern aus? Ich habe ja den Anspruch an sie, dass man sie in der Größe ändern kann und vor allem sollten sie nicht wirklich Einfluß auf das Text Layout haben! Deswegen hielt ich ein extra Layer für Bilder auch am sinnvollsten...
 

André Uhres

Top Contributor
JTextPane ist schon richtig. Selbstverständlich müssen die Icons den Text beeinflussen können, sonst würde man ja nicht das lesen können, was sonst eventuell durch ein Icon überdeckt wird. Die Icons schneiderst du dir am besten von vornherein auf die richtige Grösse (mit irgendnem Bildeditor ).

Ein extra Layer für Bilder wird dich in Teufels Küche bringen. Spätestens beim Scrollen fangen deine Probleme wieder ganz von vorne an, weil der Text einfach munter unter den schönen Icons fortschwimmt...
 

manuche

Bekanntes Mitglied
naja ok... da hab ich wieder nicht dran gedacht!
Ich hatte halt den Anspruch Bilder so frei wie möglich positionieren zu können!
aber anscheinend sollte ich das ganze nochmal überdenken!
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
MiMa Fonts, Icons, Bilder in JavaFX Anwendung AWT, Swing, JavaFX & SWT 5
F Bilder zu ausführbarer Jar-Datei hinzufügen AWT, Swing, JavaFX & SWT 5
G JPanel per Drag and Drop JButtons und Bilder ablegen AWT, Swing, JavaFX & SWT 1
G JPanel mit JButtons und Bilder AWT, Swing, JavaFX & SWT 5
Linjutsu Den Inhalten aus einer ArrayList Bilder zuweisen (Kartenspiel) AWT, Swing, JavaFX & SWT 8
M Swing Bilder in Swing anzeigen AWT, Swing, JavaFX & SWT 9
S AffineTranformation Bilder verschwinden von Anzeige bei Pan, Zoom AWT, Swing, JavaFX & SWT 6
G Bilder in javafx Project AWT, Swing, JavaFX & SWT 11
N Bilder auf Button einfügen und mehrmals ändern (ein Button, mehrere ActionListener) AWT, Swing, JavaFX & SWT 2
N eclipse Java, bilder benutzten Funktioniert nicht AWT, Swing, JavaFX & SWT 6
Kirby.exe Bilder in GUI einfügen AWT, Swing, JavaFX & SWT 8
T Bilder bei einem JFrame einfügen AWT, Swing, JavaFX & SWT 4
K JLabel mit Bilder im nicht initialisierten JPanel hinzufügen AWT, Swing, JavaFX & SWT 5
L Bilder werden in exportierter Datei nicht geladen AWT, Swing, JavaFX & SWT 6
C Bilder so einbinden, dass sie sich ändern AWT, Swing, JavaFX & SWT 6
J Bilder aus dem SceneBuilder werden in der Jar nicht dargestellt AWT, Swing, JavaFX & SWT 4
TheWhiteShadow JavaFX Bilder werden ungewollt Skaliert AWT, Swing, JavaFX & SWT 1
B JavaFX Bilder in einem Gewissen bereich halten AWT, Swing, JavaFX & SWT 1
J Bilder proportional verkleiner AWT, Swing, JavaFX & SWT 12
E Bilder skalieren AWT, Swing, JavaFX & SWT 4
DaCrazyJavaExpert Swing Bilder überlagern AWT, Swing, JavaFX & SWT 19
A Bilder als Hintergrund AWT, Swing, JavaFX & SWT 2
@SupressWarnings() JavaFX Bilder in executable jar laden AWT, Swing, JavaFX & SWT 5
Sugan JavaFX Bilder drucken AWT, Swing, JavaFX & SWT 0
K JPanel Bilder bei Windows nicht darstellbar AWT, Swing, JavaFX & SWT 6
Sugan Java FX Verzeichnisüberwachung -> Bilder auf GUI anzeigen AWT, Swing, JavaFX & SWT 4
E AWT Bilder als "Array" abspeichern. AWT, Swing, JavaFX & SWT 4
MrSnake Bilder aus Unterordner einfügen AWT, Swing, JavaFX & SWT 2
I 2D-Grafik Bilder Eingefügt, button jetzt im Hintergrund AWT, Swing, JavaFX & SWT 2
C SWT Treeview mit Bilder im Label verändert Expanded Icon AWT, Swing, JavaFX & SWT 1
M Swing JTextPane, Bilder und Text-flow AWT, Swing, JavaFX & SWT 2
A Mit dem Scene Builder eine Collage erstellen (Bilder beziehen aus Flickr) AWT, Swing, JavaFX & SWT 1
thet1983 JTable Bilder AWT, Swing, JavaFX & SWT 6
GenerationLost Bilder an bestimmten Platz einfügen/Objekte visualisieren AWT, Swing, JavaFX & SWT 1
F Bilder in jFrame einfügen AWT, Swing, JavaFX & SWT 3
J Bilder als Variable an einem Objekt speichern AWT, Swing, JavaFX & SWT 3
I Swing Bilder werden nach Export nicht angezeigt AWT, Swing, JavaFX & SWT 1
D 2D-Grafik Bilder anzeigen AWT, Swing, JavaFX & SWT 4
J Bilder auf JPanel (im JScrollPane) nacheinander laden AWT, Swing, JavaFX & SWT 0
vodkaz JFrame,Bilder und Zeitverzögerung AWT, Swing, JavaFX & SWT 2
A Swing Bilder werden nicht angezeigt AWT, Swing, JavaFX & SWT 3
I SWT Bilder, bzw. ein einzelnes Bild AWT, Swing, JavaFX & SWT 6
M Bilder zeichnen, NullPointer Exception AWT, Swing, JavaFX & SWT 3
Xbody 2D-Grafik JavaFX Bilder transformieren AWT, Swing, JavaFX & SWT 2
C 2D-Grafik Steganographie - Verschlüsselung von Dateien in Bildern - Bilder zeigen schwarze Rechtecke AWT, Swing, JavaFX & SWT 13
P Durch Bilder Scrollen AWT, Swing, JavaFX & SWT 2
F Bilder werden nicht in's Array geladen AWT, Swing, JavaFX & SWT 4
K Bilder übereinanderlegen AWT, Swing, JavaFX & SWT 11
windl Querstreifen beim Bilder malen und anpassen an neue CPU AWT, Swing, JavaFX & SWT 12
V Fertige Komponente zum Anzeigen mehrerer Bilder AWT, Swing, JavaFX & SWT 5
Karuka 2D-Grafik Bilder in GridLayout einfügen AWT, Swing, JavaFX & SWT 7
J Bilder in ausführbare jar einbinden AWT, Swing, JavaFX & SWT 7
J Swing Bilder anzeigen in Gridlayout AWT, Swing, JavaFX & SWT 11
H 2D-Grafik Bilder laden ist nicht zuverlässig AWT, Swing, JavaFX & SWT 3
F Bilder ineinander kopieren AWT, Swing, JavaFX & SWT 3
P Bilder verkleinern AWT, Swing, JavaFX & SWT 2
C SWT Mehrere Bilder in GUI laden AWT, Swing, JavaFX & SWT 5
Furtano AWT Skalierung mehrerer Bilder / Histogramme im Fenster AWT, Swing, JavaFX & SWT 4
Furtano AWT mehrere Bilder in einen Frame zeichnen + Layout Manager AWT, Swing, JavaFX & SWT 10
T 2D-Grafik Statisches Hintergrundbild, dynamische Bilder drüber AWT, Swing, JavaFX & SWT 2
C Zwei Bilder übereinander legen AWT, Swing, JavaFX & SWT 1
L [SWT] Daten und Bilder drucken AWT, Swing, JavaFX & SWT 2
S Flickr Bilder in Gui Oberfläche AWT, Swing, JavaFX & SWT 21
L Bilder im JPanel als Hintergrund - Swing AWT, Swing, JavaFX & SWT 2
K Bilder nacheinander einfügen AWT, Swing, JavaFX & SWT 3
H Bilder auf Buttons per Klick tauschen ( Puzzle ) AWT, Swing, JavaFX & SWT 8
H Bilder in Array zufällig anordnen AWT, Swing, JavaFX & SWT 4
P 2D-Grafik Viele Bilder zu einem Video AWT, Swing, JavaFX & SWT 3
J Vergleicher zweier Bilder AWT, Swing, JavaFX & SWT 2
C zwei Bilder nacheinander anzeigen AWT, Swing, JavaFX & SWT 2
L Swing Bilder über andere Bilder laden AWT, Swing, JavaFX & SWT 3
J Bilder überlappen AWT, Swing, JavaFX & SWT 18
P Bilder werden nach Änderung nicht angezeigt AWT, Swing, JavaFX & SWT 15
3 2D-Grafik Rechtecke auf Bilder legen und auslesen AWT, Swing, JavaFX & SWT 4
M Mehrere Bilder auf einmal anzeigen AWT, Swing, JavaFX & SWT 9
P Swing html mit bilder drin AWT, Swing, JavaFX & SWT 12
F Nicht alle Bilder werden angezeigt AWT, Swing, JavaFX & SWT 2
E Bilder auf JFrame AWT, Swing, JavaFX & SWT 7
R Bilder über URL einfügen AWT, Swing, JavaFX & SWT 4
F Applet zeigt Bilder nicht an AWT, Swing, JavaFX & SWT 5
M FileChooser Bilder auswählen AWT, Swing, JavaFX & SWT 8
G Swing Bilder zeichnen AWT, Swing, JavaFX & SWT 28
L Swing Bilder im Icons-Ordner AWT, Swing, JavaFX & SWT 4
U Bilder in Jar werden nicht gefunden AWT, Swing, JavaFX & SWT 5
S SWT Canvas: Flackernde Bilder AWT, Swing, JavaFX & SWT 3
A Bilder vergleichen AWT, Swing, JavaFX & SWT 4
E Swing JTextPane Inhalt(Text und Bilder) als HTML text bekommen AWT, Swing, JavaFX & SWT 3
E AWT Bilder und Java AWT, Swing, JavaFX & SWT 11
P Bilder einfügen AWT, Swing, JavaFX & SWT 4
D Swing JEditorPane mit HTML aber ohne Bilder AWT, Swing, JavaFX & SWT 3
S Swing Kleine Bilder in Panel einfügen AWT, Swing, JavaFX & SWT 13
A AWT Bilder als Link verwenden? AWT, Swing, JavaFX & SWT 11
T SWT Wie Bilder aus JAR-Dateien einbinden? AWT, Swing, JavaFX & SWT 12
S Bilder aus der Google Book Search API auslesen AWT, Swing, JavaFX & SWT 3
J Bilder in JScrollPane zentrieren AWT, Swing, JavaFX & SWT 5
M Bilder in einem Textfeld darstellen AWT, Swing, JavaFX & SWT 2
N Bilder aus Infos generieren lassen. Welches Framework? AWT, Swing, JavaFX & SWT 8
A SWT Bilder resizen AWT, Swing, JavaFX & SWT 9
A Swing Bilder in JFrame einfügen AWT, Swing, JavaFX & SWT 2
Cloud Einige Bilder werden nicht geladen AWT, Swing, JavaFX & SWT 11

Ähnliche Java Themen

Neue Themen


Oben