MPanel (componente para Java Swing)

MPanel é uma subclasse do JPanel, que age como um gerenciador de layout. A ideia é ter um visual parecido com o que você conseguiria utilizando uma série de BoxLayouts, mas com a facilidade de um GridLayout. É no fundo um JPanel com um BoxLayout na vertical e uma série de JPanels com BoxLayouts na horizontal.

Exemplo:

cm

MPanel panel = new MPanel();
panel.setMargin(15, 15);
panel.defaultVGap = 5;
panel.defaultHGap = 15;
panel.lblSize = new Dimension(170, 30);

panel.add(0, lblNome, txtNome);
panel.add(1, 0, 15, 15, lblTotalV, txtTotalV);
panel.add(2, lblC);
panel.add(3, 0, 15, 15, rb1, rb2, rb3, rb4);
panel.add(4, lblValorC, txtValorC);
panel.add(5, lblS, txtS);
panel.add(6, 0, 15, 15, lblSC, txtSC);
panel.add(7, btnCalc);

panel.render();
add(panel);

Para obter mais detalhes, acesse o repositório no Github.

Exemplo de GridLayout (Java Swing)

Um exemplo bem simples de utilização do GridLayout, fiz para minha monitoria de programação no IFRO. É a resolução de uma atividade proposta pelo professor Jones.

Preview:
GridLayout

Código:

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

/**
 * Created by Evandro Murilo on 8/30/17.
 */
public class SwingGrid extends JFrame implements ActionListener {
    JLabel lblNome = new JLabel("Nome do funcionário: "),
           lblTotalV = new JLabel("Total de vendas: "),
           lblC = new JLabel("Comissão: "),
           lblValorC = new JLabel("Valor da comissão: "),
           lblS = new JLabel("Salário: "),
           lblSC = new JLabel("Salário + Comissão: "),
           lblEmpty = new JLabel("");
    TextField txtNome = new TextField(),
              txtTotalV = new TextField(),
              txtValorC = new TextField(),
              txtS = new TextField(),
              txtSC = new TextField();
    JRadioButton rb1 = new JRadioButton("1%"),
                 rb2 = new JRadioButton("2%"),
                 rb3 = new JRadioButton("3%"),
                 rb4 = new JRadioButton("4%");
    JButton btnCalc = new JButton("Calcular");
    ButtonGroup btnGroup = new ButtonGroup();
    GridLayout gridLayout = new GridLayout(0, 2);

    public SwingGrid() {
        setTitle("Swing test");
        setBounds(0, 0, 400, 400);
        setLayout(gridLayout);
        setResizable(false);

        gridLayout.setVgap(10);
        gridLayout.setHgap(20);

        txtSC.setEditable(false);
        txtValorC.setEditable(false);

        add(lblNome);
        add(txtNome);
        add(lblTotalV);
        add(txtTotalV);
        add(lblC);
        add(lblEmpty);
        add(rb1);
        add(rb2);
        add(rb3);
        add(rb4);
        add(lblValorC);
        add(txtValorC);
        add(lblS);
        add(txtS);
        add(lblSC);
        add(txtSC);
        add(btnCalc);

        btnGroup.add(rb1);
        btnGroup.add(rb2);
        btnGroup.add(rb3);
        btnGroup.add(rb4);

        btnCalc.addActionListener(this);
    }

    public static void main(String args[]) {
        new SwingGrid().setVisible(true);
    }

    @Override
    public void actionPerformed(ActionEvent actionEvent) {
        double totalV, c, s, sc, p;

        try {
            totalV = Double.parseDouble(txtTotalV.getText());
            s = Double.parseDouble(txtS.getText());

            if (rb1.isSelected()) p = 0.01;
            else if (rb2.isSelected()) p = 0.02;
            else if (rb3.isSelected()) p = 0.03;
            else p = 0.04;

            c = totalV * p;
            sc = s + c;

            txtValorC.setText(c + "");
            txtSC.setText(sc + "");
        } catch (Exception e) {
            txtValorC.setText("Error");
            txtSC.setText("Error");
        }
    }
}

Alguns exemplos em Java

Voltei a programar um pouco em Java e criei dois repositórios no Github. O primeiro é um exemplo de como utilizar a bandeja do sistema (system tray) no Java Swing, fiz para um aluno que atendi na minha monitoria de programação no IFRO.

O segundo é um exemplo simples de concorrência, tirei a ideia de um exercício do livro Thinking in Java (4th Edition). Pretendo adicionar mais exemplos futuramente.

Análise de Frequência de Letras

Um programa que gera um gráfico da análise de frequência de letras de um texto. Para salvar ou personalizar um gráfico, clique nele com o botão direito do mouse. Feito em Java, utilizando JavaFX e JFreeChart.

Download (MEGA)

Teste de Velocidade de Digitação

Um simples teste de velocidade de digitação desenvolvido em Java, utilizando JavaFX, em abril de 2016.

Download (MEGA)

Continuar lendo

Blackjack (21)

Um jogo de blackjack (também conhecido como 21) desenvolvido em Java, utilizando a plataforma JavaFX, em abril de 2016.

Download (MEGA)

Continuar lendo

Simulador de Máquinas de Estados Finitos

Um simulador de máquinas de estados finitos feito em Java, usando a plataforma JavaFX, em abril de 2016. Nele é possível desenhar e testar máquinas de estados finitos que aceitam o alfabeto [0, 1].

Download (MEGA)

Continuar lendo