JPanel ou outro Component com a borda e o nome

18 respostas
adrianostanley
Ola pessoal... me enrolei todo pra tentar descrever esse meu problema entao vou tentar desenhar... como eu faco pra ter numa interface, um JPanel ou qualquer outro Component, como um Container, que fique disposto da seguinte forma:
---Titulo----------------------------
|                                    |
| //conteudo                    |
|                                    |
-------------------------------------
A ultima coluna ficou totalmente torta, mas nao consigo desenhar direito...

Espero ter sido claro... :?

Abracos...

18 Respostas

D
adrianostanley:
da seguinte forma:
---Titulo----------------------------
|                                    |
| //conteudo                    |
|                                    |
-------------------------------------
Putz, você quer uma 'quebra' de entrada ali no canto direito do seu componente?? Nunca tive essa necessidade, geralmente quando preciso de algo muito específico, recorro a reescrita do componente. A meu ver é a única solução. Você está usando o NetBeans para criar sua interface gráfica, certo? Abraços!
adrianostanley

huahua… nao nao… eh que meu desenho ficou horrivel mesmo… o problema eh que nao sei descrever essa parada… eh como se fosse uma borda que ficasse em volta do JPanel sendo que no topo dela, ficasse uma string… em Delphi tem um componente assim, vc adiciona e muda o Caption dele… em Java to penando pra achar isso…

_fs
Há opções de cor e thickness também.

Há opções de cor e thickness também.

adrianostanley

Isso!! Era desse jeito mesmo que eu queria… agora, mais uma duvida, se eu quisesse alterar a fonte desse titulo na borda? Tem como??? Obrigado!

_fs

http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/BorderFactory.html#createTitledBorder(javax.swing.border.Border)
Veja todas as variações do método.

Mais em:
http://java.sun.com/docs/books/tutorial/uiswing/components/border.html

D

Cara, no NetBeans você faz isso em 2 segundos. Qual sua IDE?

_fs

Com código java faz em 2 segundos também -_-

adrianostanley

Uso o Eclipse…

Jah consegui… deixei assim (pra quem estiver lendo o topico e msm duvida):

TitledBorder border = BorderFactory.createTitledBorder( null, arg0, TitledBorder.LEFT, TitledBorder.DEFAULT_POSITION, Fontes.PADRAO_PANELS, null );

Vlw pessoal… abracos!

_fs

Você pode configurar a fonte a ser usada em bordas globalmente:

D

Sim, agora imagine se o problema dele ficar mais complexo e precisar usar n layouts? Não é melhor consertar agora para não dar problema depois e ter retrabalho?

_fs

Está se referindo a criação de interfaces em geral? Se sim, nunca vi uma tela que um FormLayout não resolveu perfeitamente em 5 minutos.

D

Na verdade me referi em mesclar layouts, mas tudo bem, se você prefere codificar qualquer tipo de layout na mão, boa sorte.

_fs

Quem precisa de sorte é quem precisa lidar com o obscuro e ineditável código gerado pelo netbeans ;D
http://www.jgoodies.com/freeware/forms

Acredito de verdade que existam aplicações com requerimentos que nem passam por minha cabeça que possam exigir um gerenciador de layouts diferente. Mas sinceramente, nunca vi.

D

LIPE:
Quem precisa de sorte é quem precisa lidar com o obscuro e ineditável código gerado pelo netbeans ;D
http://www.jgoodies.com/freeware/forms

Hmmm, não conhecia essa ferramenta, darei uma olhada nele, ja salvei aqui, valeu.
Mas em relação ao NetBeans, nunca tive necessidade de editar aquele código monstruoso, alguém já?

adrianostanley

Eu já… já tive que mudar não me lembro o que mas tinha a ver com o posicionamento ou o tamanho… passei tanto perrenhe pra alterar e não consegui… enfim… viva o Eclipse e o JGoodies…

_fs

adriano, deveria ter postado a dúvida no GUJ ;D

adrianostanley

Hehe, mas eu já usava o Eclipse há um bom tempo… usei o NetBeans nesse dia pra testar mesmo…

Aproveitando a deixa e que se está discutindo o JPanel e suas bordas aqui, me deparei com um outro problema… eu quiz alterar a cor de fundo do JPanel com o método setBackground( Color c ); ele funciona… eu altero normalmente… porém, ele colore a área inteira… as bordas, que eram arredondadas nos cantos agora ficam com um “quadrado” no fundo da cor que eu escolhi…

Há como alterar a cor apenas do que está dentro da borda, mesmo essa borda sendo arredondada nos cantos??

Essa é difícil… :stuck_out_tongue: Abraços…

_fs

hehe difícil de fato. Acho que terá que sobrescrever o método paintComponent. Algo como:

public class RoundedPanel extends JPanel {
    public RoundedPanel( String borderText ) {
         // seta a borda e tudo mais
    }

    protected void paintComponent( Graphics g ) {
        int width = getWidth();
        int height = getHeight();

        g.setColor( getBackground() );
        g.fillRoundRect( 0, 0, width, height, height, height );

        super.paintComponent( g );
    }
}
Criado 12 de dezembro de 2006
Ultima resposta 13 de dez. de 2006
Respostas 18
Participantes 3