.setBounds funktioniert nicht für JLabel und JButton

Ich versuche mich zu ändern, die Positionierung von ein JLabel und ein JButton auf meine GUI. Obwohl ich versuche zu verwenden .setBounds ändern Ihre Orte; Sie beide nur erscheinen in der oberen Mitte des Bildschirms.

import java.awt.color.*;
import java.awt.font.*;
import java.awt.Graphics;
import java.awt.Image;
import javax.swing.*;
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import javax.swing.UIManager.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

public class yo implements MouseListener {

Image image;
JButton button = new JButton("Wassup");
JFrame frame = new JFrame();
JLabel heloo = new JLabel("yo");
JPanel panel = new JPanel()
{
    @Override
    public void paintComponent(Graphics g)
    {
        super.paintComponent(g);
        ImageIcon i = new ImageIcon("hi.jpg");
        image = i.getImage();
        g.drawImage(image,150,150,null);
        g.drawString("Hello",100,100);
        g.drawString("Hi",50,50);
    }
};


public yo()
{
    frame.add(panel);
    frame.setTitle("Hello");
    frame.setSize(500,500);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setVisible(true);
    frame.setLocationRelativeTo(null);
    panel.add(heloo);
    panel.add(button);
    button.setBounds(200,100,200,100);
    heloo.setBounds(100,100,100,100);
    button.addMouseListener(this);
}

public void mouseClicked (MouseEvent event)
{
    heloo.setText(String.format("Clicked at %d,%d", event.getX(), event.getY()));
}
public void mouseEntered (MouseEvent Event){}
public void mouseExited (MouseEvent Event){}
public void mousePressed (MouseEvent Event){}
public void mouseReleased (MouseEvent Event){}

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

Ich entschuldige mich über alle Einfuhren, ich weiß wirklich nicht, welche ich brauche und welche sind einfach nur sinnlos.

Grundsätzlich würde ich gerne etwas Hilfe so ändern Sie die Positionierung meiner Komponenten.

  • Das ist eine Sache, die ich gerne über Eclipse; Sie werden herausfinden, was die Importe, die Sie benötigen und fügen Sie Sie für Sie.
  • Nicht verwenden Sie setBounds() festlegen der Größe und Position einer Komponente. Lassen Sie den layout-manager seinen job tun. Das ist, wenn tatsächlich was passiert ist. Ein JPanel verwendet ein FlowLayout, so dass die Bauteile sind positioniert, basierend auf den Regeln von das FlowLayout.
  • Was @camickr sagte
  • 1) vermeiden Sie Im Allgemeinen das importieren von ganzen Paketen ( import awt.* ), wie es ist eine schlechte Praxis, 2), wenn Sie von der Java-API, können Sie lassen Sie Sie in Frage, da die meisten Menschen bereits wissen, die Klassen.
  • Ich mag die Importe mit SSCCE denn ich glaube nicht, verwenden Sie ein IDE-und ich weiß nicht, wie das Tippen Sie in mir selbst.
  • Bitte lernen Sie die java Namenskonventionen halten.

Schreibe einen Kommentar