JLabel - brak możliwości ustawienia położenia

0

witam
Czy może mi ktoś wytłumaczyć czemu nie nie mogę ustalić położenia JLabel ? niezależnie od wprowadzonych wartości zawsze wyświetla mi się po lewej strony po środku okna.

 
import javax.swing.JLabel;
import javax.swing.JPanel;


public class Etykiety extends JPanel {
public JLabel lbl_1;
public Etykiety(){
	lbl_1 = new JLabel("Kamil");
	
	lbl_1.setBounds(50, 50, 100, 50);
	
}}

 import javax.swing.JFrame;


public class Main {
static JFrame frame;
static Etykiety etykiety;
	public static void main(String[] args) {
		frame = new JFrame("program");
		etykiety = new Etykiety();
		frame.add(etykiety.lbl_1);
		frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);
		frame.setSize(700,500);
		//etykiety.layout();
		etykiety.lbl_1.setBounds(200, 200, 100, 50);
		frame.setLocationRelativeTo(frame);
		frame.setVisible(true);
	
	}

}
0

Poczytaj o tym co to są Layouty ;)

2

Poczytaj:
http://docs.oracle.com/javase/tutorial/uiswing/layout/visual.html

tutaj masz kod w którym to działa:

import java.awt.*;

import static javax.swing.WindowConstants.EXIT_ON_CLOSE;

/**
 * Author: Daniel
 */
public class Main {
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                LabelFrame labelFrame = new LabelFrame();
                labelFrame.setDefaultCloseOperation(EXIT_ON_CLOSE);
                labelFrame.setVisible(true);
            }
        });
    }
}

//******************************************************************************

import javax.swing.*;

/**
 * Author: Daniel
 */
public class LabelFrame extends JFrame {
    public LabelFrame() {
        prepareFrame();
        initializeComponents();
    }

    private void prepareFrame() {
        setSize(700, 500);
        setLocationRelativeTo(null);
    }

    private void initializeComponents() {
        LabelPanel labelPanel = new LabelPanel();
        add(labelPanel);
    }
}

//******************************************************************************

import javax.swing.*;
import java.awt.*;

/**
 * Author: Daniel
 */
public class LabelPanel extends JPanel {
    public LabelPanel() {
        preparePanel();
        initializeComponents();
    }

    private void preparePanel() {
        setLayout(null);
    }

    private void initializeComponents() {
        JLabel etykieta = new JLabel("etykieta");
        etykieta.setBounds(100, 200, 100, 50);
        etykieta.setBackground(Color.blue);
        add(etykieta);
    }
}

Chodzi o to, że każdy kontener ma jakiś domyślny layout, JFrame ma GridLayout, a JPanel na FlowLayout. Nie można ustawić na sztywno rozmieszczenia komponentu jeśli korzysta się z któregoś layotu. Jeśli chcesz ustawić na sztywno położenie komponetu w kontenerze to musisz ustawić layot na null dla kontenera.

0

Wielkie dzięki :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1