.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.
Du musst angemeldet sein, um einen Kommentar abzugeben.
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 eine
FlowLayout
, so dass die Bauteile sind positioniert, basierend auf den Regeln von das FlowLayout. Ändern kann man das FlowLayout zum ausrichten von Komponenten auf der linken Seite, wenn Sie wollen. Oder Sie können einen anderen layout-manager.Lesen Sie die Swing-tutorial auf Layout-Manager zu finden, die andere layout-Manager, die Sie verwenden können.
I would like some help on how to change the positioning of my components.
- bevor wir geben können, eine bessere Antwort auf die layout-manger (oder eine Kombination von layout-Managern) zu verwenden. Jede Anforderung ist anders.Swing has no decent Layout manager.
- völlig falsch. Gibt es layout-Manager, die einfach zu bedienen sind und lösen einen hohen Anteil an "common" - layout-Probleme. Natürlich gibt es keine einzelnen layout-manager, um alle Probleme zu lösen. Die gleiche Weise, es gibt kein Programm zur Lösung geschäftlicher Probleme. Das ist, warum wir code schreiben, zum Umgang mit neuen und wechselnden Anforderungen. Layout-Manager sind ein guter Ansatz zur Minimierung der Menge an code benötigt, die für verschiedene Anforderungen.Give me a layout manager that can do this or this...
- es gibt niemals nur eine einzige tool, das funktioniert alles. Das ist, warum wir haben Hämmer und Schraubendreher. Wählen Sie das entsprechende Werkzeug für den job. Nur weil ein tool, das Sie kennen nicht einen bestimmten job für Sie bedeutet nicht, dass das Konzept der tool ist falsch. Ich bin mir sicher, dass nahezu jeder Mensch besitzt einen hammer und Schraubenzieher, weil Sie so praktische tools. Gleich mit layout-Managern. Sie machen einen großen Prozentsatz der layouts zu erleichtern.Durch festlegen des Layouts des JPanel auf null, wird er in die "Absolute Layout", und klicken Sie dann in der Lage, um die position des JLabel-und JButton mit setBounds().