[RESOLVIDO] Melhor Layout para a Tela

10 respostas Resolvido
java
P

Hei boa tarde.
Sou iniciante no mundo Java e em um projeto, chegamos a um layout que me deixou confuso.
Porém não pretendo descartar nem mudar (muito) de como ficou.
Gostaria muito dos colegas algum caminho, dica de quais procedimentos adotar para concluir esta tela. Segue o desenho da mesma e algum código já elaborado e também para censura.

A maior dúvida é em relação à parte central da tela. Tipo qual layout…

Obrigado por toda e qualquer ajuda.

image

package jogodavelha4;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.GridLayout;
import java.util.Calendar;
import javax.swing.BorderFactory;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class TelaPlacar extends JFrame {
    private static final Font Media_22 = new Font("Arial Narrow", Font.BOLD, 28);
    private static final Font Grande_48 = new Font("Action Jackson", Font.BOLD, 48);
    JPanel panelCentro = new JPanel();
    JLabel tituloPlacar = new JLabel("Jogo da Velha - Placar");
    JButton btnVoltar = new JButton("Voltar");
    //================================================
    public TelaPlacar() {
        Dimension size = new Dimension(600, 500);
        setSize(size);
        setMinimumSize(size);
        setLocationRelativeTo(null);
        //-
        JPanel c = new JPanel();
        c.setBackground(Color.BLUE);
        c.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
        c.setLayout(new BorderLayout(5, 5));
        //- Painel Central (base da tela)
        panelCentro.setBackground(Color.cyan);
        panelCentro.setLayout(new BorderLayout(5, 5));
        c.add(tituloPlacar, BorderLayout.NORTH);
        c.add(btnVoltar, BorderLayout.SOUTH);
        c.add(panelCentro, BorderLayout.CENTER);
        add(c);
        MontaPlacar();
    }
    //================================================
    private void MontaPlacar() {
        //-Monta painel para o combo e jlabel
        MontaOCombo();
        MontaOCentro();
        MontaRodaPe();
        ///tituloPlacar.setFont(Media_22);
        ///btnVoltar.setFont(Media_22);
        //-Titulo da Tela e Botão Voltar
        //-ComboBox
        //PreparaEPoeValor();
    }
    //================================================
    private void MontaOCentro() {
        //JPanel panelMeioTela = new JPanel();
        //panelMeioTela.setLayout(new GridLayout(2,2));
    }
    //================================================
    private void MontaRodaPe() {
        JLabel lblquemEX = new JLabel("Quem é o X: ");
        lblquemEX.setFont(Media_22);
        JLabel lblquemEO = new JLabel("Quem é o O: ");
        lblquemEO.setFont(Media_22);
        JTextField txtquemEX = new JTextField("Luiz Carlos");
        txtquemEX.setFont(Media_22);
        JTextField txtquemEO = new JTextField("Luiz Fernando");
        txtquemEO.setFont(Media_22);
        
        JPanel panelRodape = new JPanel();
        panelRodape.setLayout(new GridLayout(2,2));
        panelRodape.add(lblquemEX);
        panelRodape.add(txtquemEX);
        panelRodape.add(lblquemEO);
        panelRodape.add(txtquemEO);
        
        panelCentro.add(panelRodape, BorderLayout.SOUTH);
    }
    //================================================
    private void MontaOCombo() {
        JPanel panelCombo = new JPanel();
        panelCombo.setLayout(new GridLayout(1,2));  
        //-
        JComboBox  combo = new JComboBox ();
        combo.setFont(Media_22);
        //-
        JLabel lblMsgPlacar = new JLabel();
        lblMsgPlacar.setFont(Media_22);
        lblMsgPlacar.setHorizontalAlignment(javax.swing.JTextField.LEFT);
        lblMsgPlacar.setText("< Escolha a Data/Jogo");
        //-
        panelCombo.add(combo);
        panelCombo.add(lblMsgPlacar);
        //-
        panelCentro.add(panelCombo, BorderLayout.NORTH);
    }
    //================================================
    public static void main(String[] args) {
        TelaPlacar placar = new TelaPlacar();
        placar.setVisible(true);
    }
    //================================================
    private void PreparaEPoeValor() {
        Calendar f=Calendar.getInstance();
        String hora=f.get(java.util.Calendar.HOUR_OF_DAY)+":"+f.get(java.util.Calendar.MINUTE)+":"+f.get(java.util.Calendar.SECOND);
        //-
        JPanel panelValores = new JPanel();
        JLabel lblData = new JLabel(hora);
        JLabel lblVenceu = new JLabel("Venceu");
        JLabel lblVelha = new JLabel("Velha");
        JLabel lblTempo = new JLabel("Tempo");
        JLabel lblClick = new JLabel("Clicks");
        //-
        panelValores.setLayout(new BoxLayout(panelValores, BoxLayout.X_AXIS));
        panelValores.add(lblData);
        panelValores.add(lblVenceu);
        panelValores.add(lblVelha);
        panelValores.add(lblTempo);
        panelValores.add(lblClick);
    }
    //================================================
}

10 Respostas

J

Use o que existe como inspiração. Exemplos:

P

Nao é isso que eu preciso amigo.
Obrigado.

R

Tá falando de Layout Livre, Nulo…? Ou a parte de design?

P

Ola.
Só preciso resolver esta tela (figura anexa).

J

Entao seja mais específico sobre o problema. Resolver o que?

P

[quote=“PapaiLu, post:1, topic:379802”]
Hei boa tarde.

chegamos a um layout que me deixou confuso.
Porém não pretendo descartar nem mudar (muito) de como ficou.
A maior dúvida é em relação à parte central da tela. Tipo quais layout adotar para chegar a essa aparência.

J

Se está usando Swing, estude sobre layout managers. Fora isso, seja mais pontual na dúvida, inicie e fale a primeira dúvida, mostre a tela como ta ficando, depois vai avançando.

P

Obrigado. Vou fazer isso.

M

Opa. Seja mais pratico use primeiramente ferramentas de WindowBuilder no eclipse, faça com layout fixo e posteriormente se necessário tente deixar a tela flexível. Pois se não existe a necessidade de redimensionar a tela da aplicação, então não faça com posicionamento fixo \o

J
Solucao aceita

Se nao está usando WindowBuilder, realmente ta se complicando a toa fazendo tudo via código.

Criado 16 de dezembro de 2018
Ultima resposta 29 de dez. de 2018
Respostas 10
Participantes 4