Pergunta

É possível adicionar um JLabel em cima do outro JLabel? Obrigado.

Foi útil?

Solução

A resposta curta é sim, como um JLabel é um Container , para que ele possa aceitar um Component (a JLabel é uma subclasse de Component) para adicionar na JLabel usando a add método:

JLabel outsideLabel = new JLabel("Hello");
JLabel insideLabel = new JLabel("World");
outsideLabel.add(insideLabel);

No código acima, o insideLabel é adicionado à outsideLabel.

No entanto, visualmente, uma etiqueta com o texto "Hello" mostra-se, por isso, não se pode realmente ver a etiqueta que está contido dentro do rótulo.

Assim, a questão se resume o que realmente quer realizar, adicionando um rótulo em cima de outro rótulo.


Editar:

A partir dos comentários:

Bem, o que eu queria fazer era primeiro, ler uma certa fração de um arquivo, em seguida, exibir a fracção numa JLabel. o que eu pensei foi a dividir a fracção em 3 partes, em seguida usar uma etiqueta para cada um dos três. em seguida, em segundo lugar, eu quero ser capaz de arrastar a fração, então eu pensei que eu poderia usar outro JLabel e coloque o 3'mini jlabels' sobre o grande JLabel. eu não sei se isso vai funcionar embora ..: |

Parece que um deve olhar para como usar gerenciadores de layout de Java.

Um bom lugar para começar seria Usando gerenciadores de layout e a Visual Guia para layout Managers , tanto de O Java Tutoriais .

Parece uma GridLayout poderia ser uma opção para realizar a tarefa.

JPanel p = new JPanel(new GridLayout(0, 1));
p.add(new JLabel("One"));
p.add(new JLabel("Two"));
p.add(new JLabel("Three"));

No exemplo acima, o JPanel é feita para usar um GridLayout como o gerenciador de layout, e é dito para fazer uma fileira de JLabels.

Outras dicas

A resposta à sua pergunta inicial é sim pelas razões que qualquer componente pode ser adicionado a um Container.

A razão que você não vê o segundo rótulo é porque, por padrão um JLabel usa um gerenciador de layout nulo eo tamanho da segunda etiqueta é (0, 0), de modo que não há nada para pintar. Então tudo que você precisa fazer é definir os limites da segunda etiqueta e você vai longe.

Você não pode usar um gerenciador de layout, se você quiser componentes de arrastar ao redor, porque assim que você redimensionar o quadro etc, o gerenciador de layout será invocado e os componentes serão reposicionados baseado no gerenciador de layout do componente.

é uma questão de layout. você pode fazer isso usando layout nulo (com locais codificados duros) ou com um layout personalizado.

Você pode usar um JLayeredPane e configurá-lo de fronteira para Sem Fronteiras.

Você pode adicionar colocá-los acima uns dos outros usando a lacuna horizontal ou vertical (hgap, vgap) os atributos do
disposição JPanel p = new JPanel(new GridLayout(2, 1,-40,0)); //the 40 is the hgap , make it the same with the label height .

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top