Background Image auf SWT Oberfläche legen

Status
Nicht offen für weitere Antworten.

Art1977

Mitglied
Ich habe folgende GUI erzeugt:

Code:
final Display display = new Display(); 
           //Shell must be created with style SWT.NO_TRIM 
           final Shell shell = new Shell(display, SWT.NO_TRIM | SWT.ON_TOP); 
           shell.setBackground(display.getSystemColor(SWT.COLOR_BLACK)); 
           //define a region 
           Region region = new Region(); 
           /* TestGUI Hintergrund
           region.add(circle(80, 0, 80));
           region.add(circle(80, 100, 80));
           region.add(new Rectangle(20, 20, 250, 200));
           region.subtract(circle(20, 67, 50)); 
           region.subtract(new int[]{67, 50, 55, 105, 79, 105}); 
           region.subtract(circle(60, 67, 150));
           */
           
           /*
           region.add(circle(150, 170, 150));
           region.add(new Rectangle(170, 0, 600, 450));
           region.add(circle(100, 170, 380));
           region.add(circle(120, 120, 430));
           */
           
           //Anfang ist oben links die Ecke
           region.add(new int[]{238, 0, 785, 0, 800, 15, 800, 455, 785 ,470
                   				, 785, 526, 765, 545, 290, 545, 270, 525
                   				, 270, 510, 185, 495, 146, 513,  90, 416
                   				, 118, 389, 241, 6});
           region.add(circle(222, 233, 225));
           region.add(circle(75, 77, 485));
           region.add(circle(75, 236, 460));
           region.add(circle(15, 785, 15));//rechts Oben, runde Ecke
           region.add(circle(15, 785, 455));
           region.add(circle(15, 770, 530));
           
           
          
           /*
           region.subtract(new int[]{80, 50, 55, 105, 79, 105}); 
           region.subtract(circle(60, 100, 150));
           */
           
           //define the shape of the shell using setRegion 
           shell.setRegion(region); 
           Rectangle size = region.getBounds(); 
           shell.setSize(size.width, size.height); 
           //shell.setSize(800,600);
           

/***************************************************************
                Hier ist der versuch, das bild reinzusetzen!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

           	Label label = new Label(shell, SWT.IMAGE_JPEG);	
   	      	ImageData data = new ImageData("title.jpg"); 
   	      	Image i = new Image(display, data);
   	      	label.setImage(i);

***************************************************************/

           //add ability to move shell around 
           Listener l = new Listener() { 
              Point origin; 
              public void handleEvent(Event e) { 
                 switch (e.type) { 
                    case SWT.MouseDown: 
                       origin = new Point(e.x, e.y); 
                       break; 
                    case SWT.MouseUp: 
                       origin = null; 
                       break; 
                    case SWT.MouseMove: 
                       if (origin != null) { 
                          Point p = display.map(shell, null, e.x, e.y); 
                          shell.setLocation(p.x - origin.x, p.y - origin.y); 
                       } 
                       break; 
                 } 
              } 
           }; 
           shell.addListener(SWT.MouseDown, l); 
           shell.addListener(SWT.MouseUp, l); 
           shell.addListener(SWT.MouseMove, l); 
           
           //add ability to close shell 
           Button b = new Button(shell, SWT.PUSH); 
           b.setBackground(shell.getBackground()); 
           b.setText("X"); 
           b.pack(); 
           b.setLocation(150, 250); 
           b.addListener(SWT.Selection, new Listener() 
           { 
              public void handleEvent(Event e) 
              { 
                 shell.close(); 
              } 
           }
           ); 
           
           shell.open();
           
  
       	while (!shell.isDisposed()) {
       		if (!display.readAndDispatch())
       			display.sleep();
       	}
       	region.dispose();
       	display.dispose();
    }

das ganze sieht so aus
TestSubtract2.jpg


nun hab ich in photoshop nen testbild als jpg gemacht, das ich auf diese schwarze fläche legen will gemacht.
im code hab ich die stelle markiert. Aber das funktioniert irgendwie nicht.[/img]
 
S

stev.glasow

Gast
Was hälst davon:

Code:
package test;

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.PaintEvent;
import org.eclipse.swt.events.PaintListener;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.ImageData;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.graphics.Region;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Shell;

public class Test {
	 static int[] circle(int r, int offsetX, int offsetY) 
     { 
        int[] polygon = new int[8 * r + 4]; 
        //x^2 + y^2 = r^2 
        for (int i = 0; i < 2 * r + 1; i++) { 
           int x = i - r; 
           int y = (int)Math.sqrt(r*r - x*x); 
           polygon[2*i] = offsetX + x; 
           polygon[2*i+1] = offsetY + y; 
           polygon[8*r - 2*i - 2] = offsetX + x; 
           polygon[8*r - 2*i - 1] = offsetY - y; 
        } 
        return polygon; 
     } 
     
	public static void main(String[] args) throws Exception {
		final Display display = new Display();
        //Shell must be created with style SWT.NO_TRIM
        final Shell shell = new Shell(display, SWT.NO_TRIM | SWT.ON_TOP);
        shell.setBackground(display.getSystemColor(SWT.COLOR_BLACK));
        //define a region
        Region region = new Region();
        /* TestGUI Hintergrund
        region.add(circle(80, 0, 80));
        region.add(circle(80, 100, 80));
        region.add(new Rectangle(20, 20, 250, 200));
        region.subtract(circle(20, 67, 50));
        region.subtract(new int[]{67, 50, 55, 105, 79, 105});
        region.subtract(circle(60, 67, 150));
       
        
        /*
        region.add(circle(150, 170, 150));
        region.add(new Rectangle(170, 0, 600, 450));
        region.add(circle(100, 170, 380));
        region.add(circle(120, 120, 430));
        */
        
        //Anfang ist oben links die Ecke
        region.add(new int[]{238, 0, 785, 0, 800, 15, 800, 455, 785 ,470
                            , 785, 526, 765, 545, 290, 545, 270, 525
                            , 270, 510, 185, 495, 146, 513,  90, 416
                            , 118, 389, 241, 6});
        region.add(circle(222, 233, 225));
        region.add(circle(75, 77, 485));
        region.add(circle(75, 236, 460));
        region.add(circle(15, 785, 15));//rechts Oben, runde Ecke
        region.add(circle(15, 785, 455));
        region.add(circle(15, 770, 530));
        
        
      
        /*
        region.subtract(new int[]{80, 50, 55, 105, 79, 105});
        region.subtract(circle(60, 100, 150));
        */
        
        //define the shape of the shell using setRegion
        shell.setRegion(region);
        Rectangle size = region.getBounds();
        shell.setSize(size.width, size.height);
        //shell.setSize(800,600);
//        
//		 Label label = new Label(shell, SWT.IMAGE_JPEG);   
         ImageData data = new ImageData("title.jpg");
         final Image i = new Image(display, data);
//         label.setImage(i);
//		 label.pack();

		
		shell.addPaintListener(new PaintListener(){


			public void paintControl(PaintEvent e) {
				e.gc.drawImage(i, 0, 0);
				
			}
			
		});
		
        //add ability to move shell around
        Listener l = new Listener() {
           Point origin;
           public void handleEvent(Event e) {
              switch (e.type) {
                 case SWT.MouseDown:
                    origin = new Point(e.x, e.y);
                    break;
                 case SWT.MouseUp:
                    origin = null;
                    break;
                 case SWT.MouseMove:
                    if (origin != null) {
                       Point p = display.map(shell, null, e.x, e.y);
                       shell.setLocation(p.x - origin.x, p.y - origin.y);
                    }
                    break;
              }
           }
        };
        shell.addListener(SWT.MouseDown, l);
        shell.addListener(SWT.MouseUp, l);
        shell.addListener(SWT.MouseMove, l);
        
       
        Button b = new Button(shell, SWT.PUSH);
        b.setBackground(shell.getBackground());
        b.setText("X");
        b.pack();
        b.setLocation(150, 250);
        b.addListener(SWT.Selection, new Listener()
        {
           public void handleEvent(Event e)
           {
              shell.close();
           }
        }
        );
        
        shell.open();
        

       while (!shell.isDisposed()) {
          if (!display.readAndDispatch())
             display.sleep();
       }
       region.dispose();
       display.dispose();
 }
	

	

}
Hab das Bild nicht als Label eingefügt sondern in den Hintergrund gezeichnet.

[edit]
Art|work im Chat hat gesagt.:
Art|work ok ich versuche das mal selbst hinzuhauen
<--| Art|work has left #java-forum.net
Du Schnödel :bae: Ich hab 3 mal geschrieben das ich einen Lösungsansatz habe und den auch gepostet habe
 
G

Guest

Gast
Hey danke, ich probier das heute mal aus.....

Hab das neben dem ganzen Firewall gelaber nicht gesehen ......

Danke nochmal...............
 

Art1977

Mitglied
Hey vielen Dank,

das funktioniert einwandfrei..... und ist ja total simpel


Aber noch ne Frage, gibts ne möglichkeit Buttons Individuell zu gestalten ? Oder muss ich da quasi tricksen mit nem Mouseoverlistener und nen Bereich definieren ?

Gruß Art
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Swing Background Image in JFrame implementieren AWT, Swing, JavaFX & SWT 40
J 2D-Grafik Background Image Klasse AWT, Swing, JavaFX & SWT 14
Luk10 Überschneidung von Image und Background AWT, Swing, JavaFX & SWT 7
P [SWT] Background-Image skalieren statt kacheln AWT, Swing, JavaFX & SWT 2
Juelin setzen background color für selected Row im Tableview AWT, Swing, JavaFX & SWT 21
izoards JavaFX Background Task warten auf Knopfdruck AWT, Swing, JavaFX & SWT 4
W SWT hover-background-problem with first column in TreeViewer AWT, Swing, JavaFX & SWT 0
J 2D-Grafik Background einer Jpanel Klasse ändern AWT, Swing, JavaFX & SWT 1
L JavaFX TableView background transparent machen AWT, Swing, JavaFX & SWT 7
M Swing JTable GroupableHeader Background Color AWT, Swing, JavaFX & SWT 4
V Graphics g - drawOval problem mit background AWT, Swing, JavaFX & SWT 1
J JavaFX TextArea dynamisch Icon im Background anzeigen AWT, Swing, JavaFX & SWT 2
ToBJo JavaFX "Blueprint" CSS Background AWT, Swing, JavaFX & SWT 4
vodkaz JButtonz Icon&Background AWT, Swing, JavaFX & SWT 3
F background bei JButton AWT, Swing, JavaFX & SWT 11
C [SWT] Widget Table verliert nach Sortierung farbige / eingefärbter Background / Zellen AWT, Swing, JavaFX & SWT 3
J JTextPane Background setzen AWT, Swing, JavaFX & SWT 6
Guybrush Threepwood JButton Background beim Klicken AWT, Swing, JavaFX & SWT 4
G Model,Listener und background jobs AWT, Swing, JavaFX & SWT 4
J JMenu unterschiedliche Background einstellen AWT, Swing, JavaFX & SWT 5
S TableCellRenderer: JLabel-Background in JPanel AWT, Swing, JavaFX & SWT 7
O JTable label background und selection AWT, Swing, JavaFX & SWT 3
T Pseudo-Transparenz für Applets -> Background grabben AWT, Swing, JavaFX & SWT 15
M JComboBox Selected-Background Farbe AWT, Swing, JavaFX & SWT 5
S noobfrage: background color wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
G background von JFrame funktioniert nicht AWT, Swing, JavaFX & SWT 9
G JFrame mit background bild -> verschiebt Buttons ? AWT, Swing, JavaFX & SWT 23
T Background Color JSpiner AWT, Swing, JavaFX & SWT 2
G TableCellRenderer Background variiert darstellen AWT, Swing, JavaFX & SWT 3
C Textfield Background auf Standard zurücksetzen AWT, Swing, JavaFX & SWT 2
S JTextArea background Transparent geht nicht AWT, Swing, JavaFX & SWT 23
A Probleme mit Windows Style (Background) AWT, Swing, JavaFX & SWT 4
G anfängerfrage:background und buttonimages AWT, Swing, JavaFX & SWT 3
R JButton background verdeckt gemaltes AWT, Swing, JavaFX & SWT 6
Z JPanels spiegeln und JLabel Background-color AWT, Swing, JavaFX & SWT 4
M JTable background AWT, Swing, JavaFX & SWT 2
saxman23 JLabel mit Background und Foreground setzen AWT, Swing, JavaFX & SWT 3
XWing Swing Image anzeigen und probleme mit klassen AWT, Swing, JavaFX & SWT 3
Telisti Javafx Image wird nicht richtig integiert AWT, Swing, JavaFX & SWT 8
K JavaFX Bildergalerie aus Image Ordner laden AWT, Swing, JavaFX & SWT 3
JMölleri Swing Image wird unscharf dargestellt AWT, Swing, JavaFX & SWT 2
L AWT .gif image transparent machen AWT, Swing, JavaFX & SWT 3
kodela angezeigtes Image entfernen AWT, Swing, JavaFX & SWT 1
R Java, GUI, Hintergrundbild, Image, AWT, Swing, JavaFX & SWT 4
T Swing Buffered Image anzeigen AWT, Swing, JavaFX & SWT 45
L Image kann nicht gefunden werden AWT, Swing, JavaFX & SWT 1
S Stretch Image in ImageView AWT, Swing, JavaFX & SWT 4
N Swing Image aus Web laden und in Icon umwandeln AWT, Swing, JavaFX & SWT 4
Fiedlerdan Image-Pfad Probleme nach Export aus Eclipse AWT, Swing, JavaFX & SWT 31
L JavaFX Image mit Blureffect AWT, Swing, JavaFX & SWT 2
Bluedaishi JavaFX Button Image aus Datenbank AWT, Swing, JavaFX & SWT 13
F javaxt.io.Image getBufferedImage liefert null AWT, Swing, JavaFX & SWT 1
Yjuq JavaFX Custom Control - Image resize AWT, Swing, JavaFX & SWT 0
D Java FX Image in einer Webanwendung annotieren und den Bereich ausschneiden AWT, Swing, JavaFX & SWT 0
I Bild über FXML (ImageView, Image) anzeigen AWT, Swing, JavaFX & SWT 1
T Image Loader lädt Bild nicht AWT, Swing, JavaFX & SWT 10
Q AWT TicTacToe Image auf Button hinzufügen AWT, Swing, JavaFX & SWT 5
BreakdownBob Swing JLabel verschwindet hinter Image AWT, Swing, JavaFX & SWT 2
L JavaFX leeres weißes Image - javafx.scene.image.Image AWT, Swing, JavaFX & SWT 2
L JavaFX Image im ImageView auf Scroll Listener reagieren AWT, Swing, JavaFX & SWT 5
Naxon89 JavaFX Image wird nicht korrekt geladen AWT, Swing, JavaFX & SWT 3
W Javafx - Image soll sich mit der Camera mitbewegen AWT, Swing, JavaFX & SWT 1
B Graphics to Image AWT, Swing, JavaFX & SWT 3
L Image in anderes kopieren AWT, Swing, JavaFX & SWT 0
T Swing Image wird nicht geladen AWT, Swing, JavaFX & SWT 1
S JavaFX Image Skalierung in Scrollpane, Scrollpane resized sich nicht AWT, Swing, JavaFX & SWT 5
I Image im PopupMenu vom SystemTray AWT, Swing, JavaFX & SWT 8
F JavaFX Position von Image angeben/verändern AWT, Swing, JavaFX & SWT 2
M JavaFX Image View Würfel berechnen AWT, Swing, JavaFX & SWT 3
L JButton mit Image AWT, Swing, JavaFX & SWT 5
F Swing Image einem Button hinzufügen AWT, Swing, JavaFX & SWT 5
B Resize von Image nach Resize von Button AWT, Swing, JavaFX & SWT 1
T Image aus "nicht-src-ordner" AWT, Swing, JavaFX & SWT 5
vodkaz (javafx) Image Problem AWT, Swing, JavaFX & SWT 2
C Image laden und Speichern - Image wird auf JPanel nicht angezeigt AWT, Swing, JavaFX & SWT 4
M Image in JTable einfügen AWT, Swing, JavaFX & SWT 9
M Image aus MS Access anzeigen lassen AWT, Swing, JavaFX & SWT 9
H Image im Array per Knopfdruck ändern AWT, Swing, JavaFX & SWT 6
H Swing JList/JTable mit JButton, JTextField, Image, JComboBox und JLable AWT, Swing, JavaFX & SWT 2
P Image oder Icon auf Tooltip zeichnen AWT, Swing, JavaFX & SWT 4
G JavaFX Image vergrößern AWT, Swing, JavaFX & SWT 5
U Image mit Zeichenbereich rotieren AWT, Swing, JavaFX & SWT 3
P Speicherproblem SWT.Image in Nebula-Gallery AWT, Swing, JavaFX & SWT 3
L JavaFX: Bild in Image einlesen AWT, Swing, JavaFX & SWT 11
D Image soll langsam sichtbar werden AWT, Swing, JavaFX & SWT 4
D JLabel Image ausrichten AWT, Swing, JavaFX & SWT 2
Z Flackern trotz Offscreen Image / Doublebuffer, (+ Frage zu Pixelvergleich) AWT, Swing, JavaFX & SWT 25
bluerob Problem beim Image zeichnen via andere Klasse AWT, Swing, JavaFX & SWT 7
H Image Icon ersetzen AWT, Swing, JavaFX & SWT 8
I Image Button AWT, Swing, JavaFX & SWT 4
U IntBuffer zum Image konvertieren. AWT, Swing, JavaFX & SWT 9
S Eigene JComponent Image zeichnen AWT, Swing, JavaFX & SWT 3
T 2D-Grafik Slideshow (DoubleBuffering und Image transformieren/bewegen) AWT, Swing, JavaFX & SWT 6
K Swing Warum bleibt das Image immer gleich AWT, Swing, JavaFX & SWT 4
L Swing dynamisches Image-Panel in Layout einbinden AWT, Swing, JavaFX & SWT 10
R Image laden sehr langsam AWT, Swing, JavaFX & SWT 7
D Image.getScaledInstance() vs. Netzwerkverbindung??? AWT, Swing, JavaFX & SWT 2
reibi SWT Image viewer AWT, Swing, JavaFX & SWT 2
lumo SWT Image funktion auf ImageDaten AWT, Swing, JavaFX & SWT 9
A Applet .gif in applet Image nicht animiert angezeigt AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen

Neue Themen


Oben