Swing JButton Icon verschiebt sich

Legi

Mitglied
Hi!
Bild sagt eigentlich alles.o_O
Das rote Kästchen zeigt die Position des JButtons, wurde nachträglich hinzugefügt.

Ich bin mir sehr sicher, dass der Button dort ist, da es dort MouseEnteredEvents triggert.:D
zthn7g1.png
Hier der Code
(Ganz rechts sind fast immer Kommentare):
Java:
public class Main extends JFrame {
   public int FrameWidth;
   public int FrameHeight;
   public static int Width;
   public static int Height;
   public JLabel lblB = new JLabel("Background");
   JButton bttnC = new JButton("Close");
   public BufferedImage bi;

   public static void main(String[] args) throws IOException {                                                                                                                       //
       EventQueue.invokeLater(new Runnable() {                                                                                                                                       //
           public void run() {                                                                                                                                                       //
               try {                                                                                                                                                               //
                   Main frame = new Main();                                                                                                                                       //Selbsterklärend
                   frame.setUndecorated(true);                                                                                                                                       //Selbsterklärend
                   frame.setVisible(true);                                                                                                                                           //Selbsterklärend
                   Width = (int) Toolkit.getDefaultToolkit().getScreenSize().getWidth();                                                                                           //Weite des Hauptbildschirms, benötigt für Calc.nMF003, siehe Calc.java
                   Height = (int) Toolkit.getDefaultToolkit().getScreenSize().getHeight();                                                                                           //Höhe des Hauptbildschirms, benötigt für Calc.nMF004, siehe Calc.java
               } catch (Exception e) {                                                                                                                                               //Selbsterklärend
                   e.printStackTrace();                                                                                                                                           //Selbsterklärend
               }                                                                                                                                                                   //
           }                                                                                                                                                                       //
       });                                                                                                                                                                           //
   }                                                                                                                                                                               // 
   public Main() throws IOException {                                                                                                                                               //
       FrameWidth = Calc.nMF003;                                                                                                                                                   //Calc.nMF003 Rechnet die Weite, die das Frame haben soll, aus, siehe Calc.java 
       FrameHeight = Calc.nMF004;                                                                                                                                                   //Calc.nMF004 Rechnet die Höhe, die das Frame haben soll, aus, siehe Calc.java
       setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);                                                                                                                               //Selbsterklärend
       setSize(FrameWidth, FrameHeight);                                                                                                                                           //Selbsterklärend
       setTitle("TechGamez Launcher");                                                                                                                                               //Selbsterklärend
       setLocation(Calc.nMF001, Calc.nMF002);                                                                                                                                       //Mitte
       BufferedImage Icon = ImageIO.read(getClass().getResourceAsStream("/Pictures/LauncherIcon.png"));                                                                           //ProgramIcon
       setIconImage(Icon);                                                                                                                                                           //ProgramIcon
       lblB.setBounds(0, 0, FrameWidth, FrameHeight);                                                                                                                               //Hintergrund
       lblB.setIcon(new ImageIcon(Scaler.scale(ImageIO.read(getClass().getClassLoader().getResource("Pictures/Background.png")), Calc.nMF003, Calc.nMF004)));                       //Hintergrund
       bttnC.setBounds(lblCX, 0, Calc.nC002, Calc.nC002);                                                                                                                           //Selbsterklärend
       int lblCX = (int) (((double)FrameWidth)- ((double)Calc.nC002));                                                                                                               //Rechnet X-Position des JButtons aus, Calc.nC002 rechnet die Größe des JButtons aus (Ist ein Quadrat), siehe Calc.java
       bttnC.setBackground(Color.GREEN);   ´                                                                                                                                       //Selbsterklärend
       bttnC.setIcon(new ImageIcon(Scaler.scale(ImageIO.read(getClass().getClassLoader().getResource("Pictures/Close/CloseUnselected.png")), Calc.nC002, Calc.nC002)));           //Müsste nachvollziehbar sein
       bttnC.setRolloverIcon(new ImageIcon(Scaler.scale(ImageIO.read(getClass().getClassLoader().getResource("Pictures/Close/CloseSelected.png")), Calc.nC002, Calc.nC002)));       //Müsste nachvollziehbar sein
       bttnC.setRolloverEnabled(true);                                                                                                                                               //Selbsterklärend
       bttnC.setBorderPainted(false);                                                                                                                                               //Selbsterklärend
       bttnC.setOpaque(true);                                                                                                                                                       //Selbsterklärend
       bttnC.setVisible(true);                                                                                                                                                       //Selbsterklärend
       getContentPane().setLayout(null);                                                                                                                                           //Selbsterklärend
       getContentPane().add(bttnC);                                                                                                                                               //Selbsterklärend
       getContentPane().add(lblB);                                                                                                                                                   //Selbsterklärend
   }
}
Java:
public class Scaler {
   public static Image scale(Image imageToScaleOld, int dWidth, int dHeight) throws IOException {
        BufferedImage scaledImage = null;
        Image scaledImg = null;
        if (imageToScaleOld != null) {
           BufferedImage imageToScale = (BufferedImage) imageToScaleOld;
            scaledImage = new BufferedImage(dWidth, dHeight, imageToScale.getType());
            Graphics2D graphics2D = scaledImage.createGraphics();
            graphics2D.drawImage(imageToScale, 0, 0, dWidth, dHeight, null);
            graphics2D.dispose();
            scaledImg = scaledImage;
        }
        return scaledImg;
    }
}
Java:
public class Calc {
   public static int nMF001 = nMF001();
   public static int nMF002 = nMF002();
   public static int nMF003 = nMF003();
   public static int nMF004 = nMF004();
   public static int nC001 = nC001();
   public static int nC002 = nC002();
   private static int nMF001() {                                                               //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
       double c = 0.2224;                                                                       //Rechnet X Position des JFrames aus 
       double e = ((double)Toolkit.getDefaultToolkit().getScreenSize().getWidth())*c;           //Rechnet X Position des JFrames aus             
       int r = (int) e;                                                                       //Rechnet X Position des JFrames aus 
       return r;                                                                               //Rechnet X Position des JFrames aus 
   }                                                                                           //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
   private static int nMF002() {                                                               //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
       double c = 0.1269;                                                                       //Rechnet Y Position des JFrames aus     
       double e = ((double)Toolkit.getDefaultToolkit().getScreenSize().getHeight())*c;           //Rechnet Y Position des JFrames aus 
       int r = (int) e;                                                                       //Rechnet Y Position des JFrames aus 
       return r;                                                                               //Rechnet Y Position des JFrames aus 
   }                                                                                           //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
   private static int nMF003() {                                                               //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
       double c = 0.5547;                                                                       //Rechnet Breite des JFrames aus
       double e = ((double)Toolkit.getDefaultToolkit().getScreenSize().getWidth())*c;           //Rechnet Breite des JFrames aus
       int r = (int) e;                                                                       //Rechnet Breite des JFrames aus
       return r;                                                                               //Rechnet Breite des JFrames aus
   }                                                                                           //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   private static int nMF004() {                                                               //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
       double c = 0.7093;                                                                       //Rechnet Höhe des JFrames aus
       double e = ((double)Toolkit.getDefaultToolkit().getScreenSize().getHeight())*c;           //Rechnet Höhe des JFrames aus
       int r = (int) e;                                                                       //Rechnet Höhe des JFrames aus
       return r;                                                                               //Rechnet Höhe des JFrames aus
   }                                                                                           //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   private static int nC001() {                                                               //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
       double c = 0.965;                                                                       //Rechnet X Position des JButtons aus                                         
       double e = ((double)nMF003)*c;                                                           //Rechnet X Position des JButtons aus                                                 
       int r = (int) e;                                                                       //Rechnet X Position des JButtons aus                                         
       return r;                                                                               //Rechnet X Position des JButtons aus                                                 
   }                                                                                           //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                                             
   private static int nC002() {                                                               //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                                                                                     
       double c = 0.0487;                                                                       //Rechnet Breite & Höhe des JButtons aus                                         
       double e = ((double)nMF004)*c;                                                           //Rechnet Breite & Höhe des JButtons aus                                                             
       int r = (int) e;                                                                       //Rechnet Breite & Höhe des JButtons aus                     
       return r;                                                                               //Rechnet Breite & Höhe des JButtons aus                                     
   }                                                                                           //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~     
}
Würde mich über eine Antwort freuen! :)
 

mihe7

Top Contributor
Ich habe es jetzt nicht ausprobiert, wage aber zu bezweifeln, dass der Code überhaupt kompiliert. Wenn ich es richtig sehe, verwendest Du lblCX in setBounds, obwohl erst eine Zeile später deklariert wird.

Abgesehen davon: Bezeichner für Variablen, Methoden und Parameter schreibt man in Java in lowerCamelCase, für Typen in UpperCamelCase. Unterstriche in Bezeichnern sind ebenso verpönt wie die ungarische Notation. Dafür hat man lieber aussagefähige Bezeichner - z. B. nMF001 bis nMF004 bringts jetzt nicht wirklich.

Was soll der Unfug mit den ganzen static Feldern und Methoden?
 

krgewb

Top Contributor
Das Programm kompiliert nicht. Es gibt zwei Fehler:
1. In der Zeile, die mihe7 bereits genannt hat.
2. In folgender Zeile wegen dem Zeichen ganz rechts:
Java:
bttnC.setBackground(Color.GREEN);   ´
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
J JButton Icon hinzufügen AWT, Swing, JavaFX & SWT 5
U Swing JButton mit Icon AWT, Swing, JavaFX & SWT 7
D JButton - Nur Icon anzeigen / transparenter Hintergrund AWT, Swing, JavaFX & SWT 2
M Swing JButton-Konstruktor Icon-Parameter (Verständnisfrage) AWT, Swing, JavaFX & SWT 7
S JButton -> Text über Icon AWT, Swing, JavaFX & SWT 4
Burny91 Swing Swatches vom JColorChooser als Icon für JButton benutzen AWT, Swing, JavaFX & SWT 4
V Ein Image als Button (nicht mit JButton(Icon)) AWT, Swing, JavaFX & SWT 5
K Schachbrett / Icon / JButton AWT, Swing, JavaFX & SWT 7
K Icon auf JButton mit Wechsel der Farbe AWT, Swing, JavaFX & SWT 2
G Gap zwischen JButton-Rand und JButton-Icon verändern AWT, Swing, JavaFX & SWT 2
S Jtree-Icon per Klick auf JBUTTON ändern AWT, Swing, JavaFX & SWT 3
K Icon und Text auf JButton anordnen AWT, Swing, JavaFX & SWT 2
I jbutton + icon icon an button anpassen, wie? AWT, Swing, JavaFX & SWT 25
B JButton mit Icon AWT, Swing, JavaFX & SWT 10
C JButton + Icon + Text AWT, Swing, JavaFX & SWT 3
J Icon in JButton AWT, Swing, JavaFX & SWT 18
R Icon auf JButton AWT, Swing, JavaFX & SWT 6
G JButton mit importFiles-Funktion auf JDrawPane AWT, Swing, JavaFX & SWT 5
B JButton Search AWT, Swing, JavaFX & SWT 8
B Swing JButton mit KeyListener AWT, Swing, JavaFX & SWT 3
L JButton durch Mausklick auslösen und Enter-Taste AWT, Swing, JavaFX & SWT 2
N Erlennen ob JButton gedrückt ist AWT, Swing, JavaFX & SWT 6
D JButton Form verändern AWT, Swing, JavaFX & SWT 4
R Grafik per JButton laden und austauschen lassen AWT, Swing, JavaFX & SWT 14
SvenPittelkow Programm soll auf JButton warten bis der geklickt wurde AWT, Swing, JavaFX & SWT 1
Badebay Problem mit JButton AWT, Swing, JavaFX & SWT 2
Z Swing Drag and Drop mit einem JButton AWT, Swing, JavaFX & SWT 1
Z Swing Kann man auf JButton zeichenen AWT, Swing, JavaFX & SWT 3
ms_cikar Jbutton erzeugt neue Buttons AWT, Swing, JavaFX & SWT 2
Drachenbauer Swing Wie ändere ich die Farbe der Konturen von jButton und jCombobox? AWT, Swing, JavaFX & SWT 18
Drachenbauer Swing Wie ändere ich die helle geklickt-Farbe von einem JButton? AWT, Swing, JavaFX & SWT 4
A Swing JButton mit Pfeiltasten bewegen AWT, Swing, JavaFX & SWT 6
F Swing Scrollbare Liste von JButton AWT, Swing, JavaFX & SWT 4
Hatsi09 JButton text layout AWT, Swing, JavaFX & SWT 9
J JButton zum ändern Der Schriftart/Schriftgröße AWT, Swing, JavaFX & SWT 2
A Swing JButton aussehen AWT, Swing, JavaFX & SWT 12
J jButton soll nach klicken eine Variable um 1 erhöhen AWT, Swing, JavaFX & SWT 2
T Swing Änderung des ActionListener Events nach Klick auf JButton AWT, Swing, JavaFX & SWT 2
S Swing JButton verschwindet nach Compilieren AWT, Swing, JavaFX & SWT 8
B Swing Posistion von JButton auslesen gibt immer 0 aus AWT, Swing, JavaFX & SWT 1
J Thread kennt JButton nicht. AWT, Swing, JavaFX & SWT 11
G Swing JButton ändert (unerwünscht) Größe bei Ausführung AWT, Swing, JavaFX & SWT 4
MR._FIRE_Flower Variable setzten mit JButton AWT, Swing, JavaFX & SWT 5
S Mit JButton neues Fester öffnen und das alte schließen AWT, Swing, JavaFX & SWT 3
T JButton wird beim vergrößern des Fensters erst sichtbar AWT, Swing, JavaFX & SWT 4
R Swing Verändern der Ausrichtung JButton und neu anzeigen AWT, Swing, JavaFX & SWT 2
G Swing JButton - Keine Klickanimation AWT, Swing, JavaFX & SWT 4
Joker4632 JButton nicht sichtbar, aber funktionsfähig AWT, Swing, JavaFX & SWT 8
B Swing JButton deaktivieren, wenn nicht alle JTextFields ausgefüllt sind. AWT, Swing, JavaFX & SWT 2
D JButton per Tastenkombi auswählen AWT, Swing, JavaFX & SWT 2
K JButton nicht sichtbar machen für User 2 AWT, Swing, JavaFX & SWT 4
L Swing JButton soll link öffnen AWT, Swing, JavaFX & SWT 1
K JButton auf anderer Klasse AWT, Swing, JavaFX & SWT 6
A JButton soll durch anklicken die Farbe wechseln AWT, Swing, JavaFX & SWT 8
T KeyListener funktioniert nicht wenn ich ein JButton hinzufüge AWT, Swing, JavaFX & SWT 1
R Swing ActionListener bei JButton AWT, Swing, JavaFX & SWT 9
B JButton -> Rahmen wegbekommen AWT, Swing, JavaFX & SWT 7
N JButton über benutzerdefinierte paintComponent setzen AWT, Swing, JavaFX & SWT 3
T JButton überlagern sich und werden erst beim Mausscrollen sichtbar AWT, Swing, JavaFX & SWT 2
B JButton erscheint in JFrame, obwohl er diesem nicht zugeordnet wurde! AWT, Swing, JavaFX & SWT 1
M JButton Probleme AWT, Swing, JavaFX & SWT 14
T Klasse über JButton schließen AWT, Swing, JavaFX & SWT 4
M Textfarbe JButton verändern AWT, Swing, JavaFX & SWT 2
N JButton ausblenden AWT, Swing, JavaFX & SWT 2
M Swing jButton Text verschwindet AWT, Swing, JavaFX & SWT 2
C Swing JButton wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
stylegangsta JLabel durch Klick auf JButton einblenden AWT, Swing, JavaFX & SWT 16
stylegangsta Eigene Klasse für JButton aus dem JFrame abrufen AWT, Swing, JavaFX & SWT 29
stylegangsta MouseEvents aus JButton aufrufen AWT, Swing, JavaFX & SWT 3
stylegangsta JButton Transparent anzeigen AWT, Swing, JavaFX & SWT 9
stylegangsta JButton Fehelr javax.swing.ImageIcon.<init>(Unknown Source) AWT, Swing, JavaFX & SWT 24
X Swing JButton's zum JScrollPane hinzufügen geht nicht. Bitte um Hilfe. AWT, Swing, JavaFX & SWT 9
S JButton-Label vergrößern AWT, Swing, JavaFX & SWT 2
J Swing Basics - JButton funktioniert nicht. AWT, Swing, JavaFX & SWT 1
L JButton mit ImageIcon/Fehlermeldung AWT, Swing, JavaFX & SWT 1
D jButton Problem, ein Rieser Button bedeckt das ganze frame AWT, Swing, JavaFX & SWT 1
L Array mit JButton, wie rausfinden auf welche JButton geklickt wurde + index des JButtons ausgeben AWT, Swing, JavaFX & SWT 4
K (GUI) JButton Farbe bei druck ändern AWT, Swing, JavaFX & SWT 3
L JButton mit Image AWT, Swing, JavaFX & SWT 5
fLooojava JButton [Focus) AWT, Swing, JavaFX & SWT 4
M JButton - Listener AWT, Swing, JavaFX & SWT 1
D jButton auf von jFrame erzeugtem jDialog AWT, Swing, JavaFX & SWT 16
L JButton flackern - Programm hängt sich auf AWT, Swing, JavaFX & SWT 3
L JButton - Größe anders als erwartet AWT, Swing, JavaFX & SWT 2
1 JButton nach Klick ausblenden AWT, Swing, JavaFX & SWT 6
X Swing 1 JButton bedeckt meine ganze Frame aber Warum? AWT, Swing, JavaFX & SWT 2
S Größe und Farbe vom JButton festlegen AWT, Swing, JavaFX & SWT 2
H Swing JList/JTable mit JButton, JTextField, Image, JComboBox und JLable AWT, Swing, JavaFX & SWT 2
J JButton neu zeichnen lassen AWT, Swing, JavaFX & SWT 9
S JButton u. Label auf paint-Methode AWT, Swing, JavaFX & SWT 1
HoloYoitsu Swing JButton in verschiedenen Winkeln drehen AWT, Swing, JavaFX & SWT 0
J vocab1 = new JButton(""+voc1.get(nr).toString()+""); AWT, Swing, JavaFX & SWT 16
A JButton wird bei ActionListener nicht "angenommen" AWT, Swing, JavaFX & SWT 7
BRoll JButton Text nicht ausblenden ("...") AWT, Swing, JavaFX & SWT 2
I JFrame mit JButton schließen? AWT, Swing, JavaFX & SWT 0
D JList&JButton erst nach Resize des JFRame sichtbar AWT, Swing, JavaFX & SWT 2
J Swing JFrame slideout, wenn JButton gedrückt wurde AWT, Swing, JavaFX & SWT 0
S Swing Rückmeldung für JButton AWT, Swing, JavaFX & SWT 4
R AWT JLabel oder JButton aktualisieren AWT, Swing, JavaFX & SWT 1
L JButton im Frame fest verankern AWT, Swing, JavaFX & SWT 0

Ähnliche Java Themen

Neue Themen


Oben