JLabel positionieren

hallo!

ich mach mein design für mein programm selber! und positioniere die elemente selbst
mit JComponent.setBounds() bzw mit setSize(), setLocation hab ichs auch schon probiert!

das JLabel welches ich so positionieren möchte wird nicht angezeigt, nur die beschriftung des labels wird angezeigt, die anderen JComponenten wie Slider und Buttons werden korrekt angezeigt!

muss man bei JLabel was besonderes berücksichtigen?? aja im label werden dann bilder angezeigt…

hoff, es kann mir wer weiterhelfen!

mfg
michael

Hallo Michael,

das JLabel welches ich so positionieren möchte wird nicht
angezeigt, nur die beschriftung des labels wird angezeigt, die
anderen JComponenten wie Slider und Buttons werden korrekt
angezeigt!

was sollte denn deiner Meinung nach bei einem JLabel angezeigt werden, wenn nicht die Beschriftung? Ich versteh leider dein Problem nicht. Vielleicht kannst du mit etwas Code auf die Sprünge helfen.

Außerdem rate ich dir von der „eigenen“ Positionionierung mit setBounds und setLocation dringend ab, denn da wirst du nicht wirklich froh werden.
Für solche Zwecke wurden LayoutManager entwickelt. Die übernehmen alle die Arbeit, z.B. auch die Anpassung, wenn du das Look&Feel wechselst oder wenn du das umgebende Fenster in der Größe änderst.

Ich empfehle hier immer gern das TableLayout, da dieses intuitiv und leicht zu verwenden ist. Dann klappts bestimmt auch mit deinem JLabel.

Ciao, Bill

Hallo Michael,

was sollte denn deiner Meinung nach bei einem JLabel angezeigt
werden, wenn nicht die Beschriftung? Ich versteh leider dein
Problem nicht. Vielleicht kannst du mit etwas Code auf die
Sprünge helfen.

naja ich setze ein image rein, das wird jedoch nicht angezeigt

Außerdem rate ich dir von der „eigenen“ Positionionierung mit
setBounds und setLocation dringend ab, denn da wirst du nicht
wirklich froh werden.
Für solche Zwecke wurden LayoutManager entwickelt. Die
übernehmen alle die Arbeit, z.B. auch die Anpassung, wenn du
das Look&Feel wechselst oder wenn du das umgebende Fenster in
der Größe änderst.

Ich empfehle hier immer gern das TableLayout, da dieses
intuitiv und leicht zu verwenden ist. Dann klappts bestimmt
auch mit deinem JLabel.

Ciao, Bill

das problem ist ich hab ein Label wo bilder abgespielt werden unterhalb vom label soll ein jslider für die x achse her und links vom label ein vertikaler slider für die y achse! die slider sollen so groß/lang sein wie das image im label…

bekomme das mit den layoutmanagern nicht wirklich hin! habs mit borderlayout probiert nur ist dann entweder der x oder y slider bissi länger…

wie kann ich das sonst noch hinbekommen??

Hallo Michael,

was sollte denn deiner Meinung nach bei einem JLabel angezeigt
werden, wenn nicht die Beschriftung? Ich versteh leider dein
Problem nicht. Vielleicht kannst du mit etwas Code auf die
Sprünge helfen.

naja ich setze ein image rein, das wird jedoch nicht angezeigt

Außerdem rate ich dir von der „eigenen“ Positionionierung mit
setBounds und setLocation dringend ab, denn da wirst du nicht
wirklich froh werden.
Für solche Zwecke wurden LayoutManager entwickelt. Die
übernehmen alle die Arbeit, z.B. auch die Anpassung, wenn du
das Look&Feel wechselst oder wenn du das umgebende Fenster in
der Größe änderst.

Ich empfehle hier immer gern das TableLayout, da dieses
intuitiv und leicht zu verwenden ist. Dann klappts bestimmt
auch mit deinem JLabel.

Ciao, Bill

das problem ist ich hab ein Label wo bilder abgespielt werden
unterhalb vom label soll ein jslider für die x achse her und
links vom label ein vertikaler slider für die y achse! die
slider sollen so groß/lang sein wie das image im label…

bekomme das mit den layoutmanagern nicht wirklich hin! habs
mit borderlayout probiert nur ist dann entweder der x oder y
slider bissi länger…

hier die sachen im borderlayout versuch:

JFrame frame= new JFrame(„Java2D Example“);
JFrame buttons = new JFrame(„buttons“);
JPanel panel = new JPanel();
MovieP example = new MovieP();

JMenuBar menuBar = new JMenuBar();
menuBar.add(new JMenu(„Datei“)).
add(new JMenuItem(„Beenden“));
frame.setJMenuBar(menuBar);
xAchse = new JSlider(0,image.getWidth(null));
yAchse = new JSlider(0,image.getHeight(null));
yAchse.setOrientation(JSlider.VERTICAL);
yAchse.setInverted(true);

JPanel panelTop = new JPanel();
JPanel panelVS = new JPanel();
panelVS.setLayout(new BorderLayout());

JPanel panel1 = new JPanel();
panel1.setSize(200, 200);
panel1.setLayout(new BorderLayout());
panelTop.add(panel1);

JPanel nLayoutS = new JPanel();
xAchse.addMouseListener(null);
JPanel nLayoutSE = new JPanel();
nLayoutS.setLayout(new BorderLayout());
nLayoutSE.setLayout(new BorderLayout());
nLayoutSE.add(ae,BorderLayout.CENTER);

nLayoutS.add(nLayoutSE,BorderLayout.CENTER);

panel.setSize(400, 400);
frame.add(example,BorderLayout.CENTER);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300, 300); //Groessedes JFrame
frame.setVisible(true); //JFrameanzeigen
frame.getContentPane().add(panel);

//Components
startButton = new Button(„start“);
startButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
//Start (or restart) animating!

timer.start();
}
});

nLayoutS.add(startButton,BorderLayout.EAST);
panel.add(nLayoutS,BorderLayout.SOUTH);

panel1.add(yAchse,BorderLayout.WEST);
panelVS.add(video_label, BorderLayout.NORTH);
panelVS.add(xAchse, BorderLayout.SOUTH);//1
//panelVS.add(panel1,BorderLayout.WEST);

panel1.add(panelVS,BorderLayout.CENTER);

panelTop.add(panel1);
frame.add(panel,BorderLayout.SOUTH);
frame.add(panelTop, BorderLayout.CENTER);

naja ich setze ein image rein, das wird jedoch nicht angezeigt

Das kann verschiedene Gründe haben. Deshalb wäre Code hilfreich, dann kann man das analysieren.

das problem ist ich hab ein Label wo bilder abgespielt werden
unterhalb vom label soll ein jslider für die x achse her und
links vom label ein vertikaler slider für die y achse! die
slider sollen so groß/lang sein wie das image im label…

bekomme das mit den layoutmanagern nicht wirklich hin! habs
mit borderlayout probiert nur ist dann entweder der x oder y
slider bissi länger…

wie kann ich das sonst noch hinbekommen??

Das BorderLayout ist nur bedingt nutzbar. Man könnte zwar verschachtelte JPanel mit jeweils einem BorderLayout benutzen, um den gewünschten Zweck zu erfüllen, einfacher sind aber da eben andere LayoutManager. Im TableLayout gibst du praktisch eine art unsichtbare Tabelle vor und kannst zu jeder Zeile und Spalte das Verhalten bestimmen, also z.B. 120px breit oder 30% vom verbleibenden Platz oder einfach nur füllend.
Für deine Anordnung wäre es also ein Layout mit 2 Spalten und 2 Zeilen:

\*---\*--------\*
| | |
| y | Bild |
| | |
\*---\*--------\*
| | x |
\*---\*--------\*

Eigentlich ganz einfach.
Hilft dir das weiter?

Für deine Anordnung wäre es also ein Layout mit 2 Spalten und
2 Zeilen:

*—*--------*
| | |
| y | Bild |
| | |
*—*--------*
| | x |
*—*--------*

Eigentlich ganz einfach.
Hilft dir das weiter?

ja, danke werde das mal ausprobieren hab schon fast alles probiert!
wenn ich den slider da reinsetz kann ich die ausrichtung auch festlegen, sodass er zb mittig oder obig gesetzt wird?

melde mich nach erfolg/misserfolg! danke vorerst

Bissel Code:

import info.clearthought.layout.TableLayout;

import java.awt.Container;
import java.net.MalformedURLException;
import java.net.URL;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JSlider;

public class SimpleApplFrame
{
 public static void main(String[] args) throws MalformedURLException
 {
 JFrame f = new JFrame();
 f.setDefaultCloseOperation(JFrame.EXIT\_ON\_CLOSE);
 f.setBounds(200, 0, 800, 600);

 double[][] constraints = new double[][] { { TableLayout.PREFERRED, TableLayout.FILL },
 { TableLayout.FILL, TableLayout.PREFERRED } };
 TableLayout layout = new TableLayout(constraints);
 layout.setVGap(8);
 layout.setHGap(8);
 Container contentPane = f.getContentPane();
 contentPane.setLayout(layout);

 JSlider yAxis = new JSlider(JSlider.VERTICAL);
 contentPane.add(yAxis, "0,0");

 JSlider xAxis = new JSlider(JSlider.HORIZONTAL);
 contentPane.add(xAxis, "1,1");

 JLabel label = new JLabel(new ImageIcon(new URL("http://upload.wikimedia.org/wikipedia/commons/thumb/c/c3/Homer\_world\_map-de.svg/280px-Homer\_world\_map-de.svg.png")));
 contentPane.add(label, "1,0");

 f.setVisible(true);
 }
}

TableLayout findest du hier: https://tablelayout.dev.java.net/
Über die Parameter beim add() kannst du die Zelle bestimmen. Zusätzlich dann auch noch die Ausrichtung, also „0,0,left,center“ und ähnliches.

Siehe Doku.
Viel Glück

das problem ist, ich muss die standardsachen verwenden, das tableLayout müsst ich erst hinzufügen zu java, muss das mit den „java-boardmitteln“ machen

lg

da das nicht bei den standardsachen von java dabei is, darf ich das nicht verwenden!

ich habs jetzt mit einem GridBagLayout probiert aber bekomm das nicht wirklich hin…