Wat is setBounds en hoe gebruik ik het?

Ik kan niets vinden op setBounds, waar het voor is, of wat de functie eigenlijk is. Kan iemand mij hier duidelijkheid over geven? Heel erg bedankt!


Antwoord 1, autoriteit 100%

U kunt setBounds(x, y, width, height)gebruiken om de positie en grootte van een GUI-component te specificeren als u de layoutinstelt op null. Dan is (x, y)de coördinaat van de linkerbovenhoek van dat onderdeel.


Antwoord 2, autoriteit 33%

setBoundswordt gebruikt om de begrenzende rechthoek van een component te definiëren. Dit omvat zijn positie en grootte.

De wordt op een aantal plaatsen binnen het framework gebruikt.

  • Het wordt gebruikt door de lay-outmanager om de positie en grootte van een component in zijn bovenliggende container te definiëren.
  • Het wordt gebruikt door het verfsubsysteem om uitknipgrenzen te definiëren bij het schilderen van het onderdeel.

Voor het grootste deel zou je het nooit moeten bellen. In plaats daarvan moet u geschikte lay-outmanagers gebruiken en hen de beste manier laten bepalen om informatie aan deze methode te verstrekken.


Antwoord 3, autoriteit 30%

Dit is een methode van de java.awt.Componentklasse. Het wordt gebruikt om de positie en grootte van een component in te stellen:

setBounds

public void setBounds(int x,
                  int y,
                  int width,
                  int height) 

Verplaatst en verkleint dit onderdeel. De nieuwe locatie van de linkerbovenhoek wordt gespecificeerd door x en y, en
de nieuwe maat wordt gespecificeerd door breedte en hoogte. Parameters:

  • x – de nieuwe x-coördinaat van deze component
  • y – de nieuwe y-coördinaat van deze component
  • breedte – de nieuwe breedte van dit onderdeel
  • hoogte – de nieuwe hoogte van dit onderdeel

xen yzoals hierboven komen in de meeste (alle?) gevallen overeen met de linkerbovenhoek.

Het is een snelkoppeling voor setLocationen setSize.

Dit werkt over het algemeen alleen als de lay-out/lay-outmanager niet bestaat, d.w.z. null.


Antwoord 4, autoriteit 7%

Er is een antwoord van @hexafraction, hij had opgegeven dat de x en y de rechterbovenhoek zijn, wat niet klopt, dat zijn de linkerbovenhoek.

Ik heb ook de bron verstrekt, controleer deze.

public void setBounds(int x,
             int y,
             int width,
             int height)

Verplaatst en verkleint dit onderdeel. De nieuwe locatie van de linkerbovenhoek wordt gespecificeerd door x en y, en de nieuwe grootte wordt gespecificeerd door breedte en hoogte.
Deze methode verandert lay-outgerelateerde informatie en maakt daarom de componenthiërarchie ongeldig.

Parameters:

x – de nieuwe x-coördinaat van dit onderdeel

y – de nieuwe y-coördinaat van dit onderdeel

breedte – de nieuwe breedte van dit onderdeel

hoogte – de nieuwe hoogte van dit onderdeel

bron:- setBounds


5

De manier waarop Java Swing Uis werk is dat voor elke JPanel er altijd een LayoutManager die beslist waar u precies uw componenten kunt plaatsen.
Elke lay-outmanagers werken anders, dus als u bijvoorbeeld een BorderLayout gebruikt, wordt setbounds () niet gebruikt door de lay-outmanager, in plaats daarvan wordt onderdeel van de componenten beslist door East, West, South, North, Centre.

Voor de NulllayOutManager (voor het geval u new JPanel(null)gebruikt, moet elke component echter een X- en Y-coördinaat hebben. Stomme Sidenote: Als uw UI driedimensionaal zou zijn, zou er ook een Z-coördinaat zijn.

Dus met public void Component.setBounds(int x, int y, int width, int height)U geeft aan waar uw component wordt geplaatst en hoeveel pixel het breed en hoog is.

Hier is een voorbeeld:

import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class JTableInNullLayout
{
  public static void main(String[] argv) throws Exception {
      JPanel panel = new JPanel(null);
      JLabel helloLabel = new JLabel("Hello world!");
      helloLabel.setBounds( 10, 50, 60, 20 ); // x, y, width, height
      panel.add(helloLabel);
      JFrame frame = new JFrame();
      frame.add(panel);
      frame.setPreferredSize( new Dimension(200,200));
      frame.pack();
      frame.setVisible(true);
  }
}

Antwoord 6

hier is een korte paragraaf uit dit artikel Hoe frames te maken (hoofdvensters) – De Java-tutorials – Oracledie uitlegt wat de setBounds-methode doet naast enkele andere vergelijkbare methoden:

De verpakkingsmethode maakt het frame zo groot dat de hele inhoud gelijk is aan of groter is dan de gewenste maat. Een alternatief voor inpakken is om expliciet een framegrootte vast te stellen door setSize of setBounds aan te roepen (die ook de framelocatie instelt). Over het algemeen verdient het gebruik van pack de voorkeur boven het aanroepen van setSize, aangezien pack de framelay-outmanager de leiding geeft over de framegrootte, en lay-outmanagers goed zijn in het aanpassen aan platformafhankelijkheden en andere factoren die de componentgrootte beïnvloeden.

de parameters van setBounds zijn (int x, int y, int width, int height)
x en y bepalen de positie/locatie en de breedte en hoogte bepalen de grootte/afmeting van het frame.

Other episodes