• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

NoOne

Java form

20 mensagens neste tópico

basicamente o que queria fazer, mas tou com dificuldades em encontrar exemplos, era: uma frame / caixa de dialogo onde fosse possivel fazer a leitura de varias variaveis.

algem sabe um bom tutorial ou tem um exemplo que possa disponiblizar...

Ps: espero ter sido explicito.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

sim, tipo ler as informaçoes duma pessoa:

nome

idade

etc.

é k da maneira k sei fazer (JOptionPane.ShowInputDialog) aparece uma caixa de dialogo para cada variavel...    :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Então e como queres ? Tudo dentro do mesmo form ?

Realmente não estou a perceber :S

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

E porque é que não fazes um fomulário para isso?

O que queres, parece-me ser, um simples formulário de introdução de dados, uma simples interface. Podes construí-la usando uma JFrame ou uma JDialog e acrescentado campos de texto, JTextField, e labels, JLabel.

Deixo aqui um exemplo, se isto não ajudar, então não percebi mesmo nada do que pretendes :P

untitled.PNG

/*
* DadosExemplo.java
*
* Created on 25 de Fevereiro de 2007, 13:33
*/

package org.sergiolopes.noone;

/**
*
* @author  Knitter
*/
public class DadosExemplo extends javax.swing.JFrame {
    
    /** Creates new form DadosExemplo */
    public DadosExemplo() {
        initComponents();
    }
    
    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    // <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents
    private void initComponents() {
        jPanel1 = new javax.swing.JPanel();
        jLabel1 = new javax.swing.JLabel();
        jLabel5 = new javax.swing.JLabel();
        jLabel2 = new javax.swing.JLabel();
        jLabel4 = new javax.swing.JLabel();
        jButton2 = new javax.swing.JButton();
        jLabel3 = new javax.swing.JLabel();
        jButton1 = new javax.swing.JButton();
        jTextField1 = new javax.swing.JTextField();
        jTextField2 = new javax.swing.JTextField();
        jTextField4 = new javax.swing.JTextField();
        jComboBox1 = new javax.swing.JComboBox();
        jScrollPane1 = new javax.swing.JScrollPane();
        jTextArea1 = new javax.swing.JTextArea();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder("Dados"));
        jLabel1.setText("Nome:");

        jLabel5.setText("Sexo");

        jLabel2.setText("Apelido:");

        jLabel4.setText("Telefone:");

        jButton2.setText("Cancelar");

        jLabel3.setText("Morada:");

        jButton1.setText("Guardar");

        jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Masculino", "Feminino" }));

        jTextArea1.setColumns(20);
        jTextArea1.setRows(5);
        jScrollPane1.setViewportView(jTextArea1);

        org.jdesktop.layout.GroupLayout jPanel1Layout = new org.jdesktop.layout.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
            .add(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                    .add(jLabel1)
                    .add(jLabel2)
                    .add(jLabel4)
                    .add(jLabel5)
                    .add(jLabel3))
                .add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                    .add(org.jdesktop.layout.GroupLayout.TRAILING, jPanel1Layout.createSequentialGroup()
                        .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                        .add(jButton1)
                        .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                        .add(jButton2)
                        .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED))
                    .add(jPanel1Layout.createSequentialGroup()
                        .add(16, 16, 16)
                        .add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                            .add(jTextField2, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 247, Short.MAX_VALUE)
                            .add(jTextField4, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 247, Short.MAX_VALUE)
                            .add(jComboBox1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                            .add(jScrollPane1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 247, Short.MAX_VALUE)
                            .add(jTextField1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 247, Short.MAX_VALUE))))
                .addContainerGap())
        );

        jPanel1Layout.linkSize(new java.awt.Component[] {jButton1, jButton2}, org.jdesktop.layout.GroupLayout.HORIZONTAL);

        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
            .add(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
                    .add(jLabel1)
                    .add(jTextField1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                .add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
                    .add(jLabel2)
                    .add(jTextField2, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                .add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
                    .add(jLabel4)
                    .add(jTextField4, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                .add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
                    .add(jLabel5)
                    .add(jComboBox1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
                .add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                    .add(jPanel1Layout.createSequentialGroup()
                        .add(14, 14, 14)
                        .add(jLabel3))
                    .add(jPanel1Layout.createSequentialGroup()
                        .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                        .add(jScrollPane1)))
                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                .add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
                    .add(jButton1)
                    .add(jButton2))
                .addContainerGap())
        );

        org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
            .add(layout.createSequentialGroup()
                .addContainerGap()
                .add(jPanel1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
            .add(layout.createSequentialGroup()
                .addContainerGap()
                .add(jPanel1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addContainerGap())
        );
        java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
        setBounds((screenSize.width-373)/2, (screenSize.height-332)/2, 373, 332);
    }// </editor-fold>//GEN-END:initComponents
    
    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new DadosExemplo().setVisible(true);
            }
        });
    }
    
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JComboBox jComboBox1;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTextArea jTextArea1;
    private javax.swing.JTextField jTextField1;
    private javax.swing.JTextField jTextField2;
    private javax.swing.JTextField jTextField4;
    // End of variables declaration//GEN-END:variables
    
}

Este é apenas um exemplo, o código foi feito com o editor de interfaces do netbeans e por isso pode parecer um pouco esquisito. Se precisares de mais ajuda avisa.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

LOL ao ver este código percebi porque deixei de programar em Swing  LOL :P

Viva ao SWT :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Como disse, é código de editor de interfaces, seja swing, seja SWT, VB, Delphi ou outra coisa qualquer é sempre código esquisito. Não tem nada a ver com Swing. Mas fiz isto em 2 minutos....

Espero é que seja o pretendido....

Mas já agora, o que tem o código que seja assim tão mau, fora o facto de, para quem não sabe o que se está a fazer, ser um pouco difícil de ver?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não é difícil de perceber se bem que uns imports simplificavam muito a coisa :P

Mas a mesmo a nível de simplicidade acho o SWT mais simples e directo pena é ter de ser programado há mão infelizmente o framework do eclipse para criar interfaces gráficas não é la grande coisa e por isso normalmente programa há mão.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

:P Sim uns imports davam jeito, mas nunca mudei a opção do IDE que passa a usar imports em vez de usar o nome completo da classe...

Queria era saber se era isto que o NoOne pretende, se for podemos colocar um exemplo mais simples.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O código não é muito bom para analizar. O que coloquei foi mesmo um exemplo, e como também já disse, foi feito por um editor gráfico. Além de algumas classes que só existem no caso de usares o mesmo IDE que eu, neste caso, as classes que permitem colocar os componentes no sitio certo.

Mas a ideia está lá.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

? Não pode ser, afinal eu uso o Netbenas :P

Muda no nome do package no início se não o fizeste. Eu uso a última versão do Netbeans e construí a interfasse usando o Matisse, o construtor de interfaces do Netbeans, no entanto o novo layout que o Mantisse usa só está disponível apartir da versão 5.5.

Se não me esquecer, amanhã, coloco aqui um exemplo feito à mão, entretanto se alguém tiver algum força.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já agora Knitter o Mantisse do NB não funca com SWT ? É  que o framework do eclipse para Interfaces Graficos é assim um cadinho fraco:S

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Fica aqui a minha contribuição, baseada na figura que o Knitter fez. Nem todo o código é necessário, eu só usei para ver se o programa funcionava, modifica de acordo com as tuas necessidades.

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

public class NoOne extends JDialog implements ActionListener{
private JPanel jp;
private JTextArea jta;
private Object[] obj = {
	new JLabel("Nome"), new JTextField(),
	new JLabel("Apelido"), new JTextField(),
	new JLabel("Telefone"), new JTextField(),
	new JLabel("Sexo"), new JComboBox(new String[]{"Masculino", "Feminino"}),
	new JLabel("Morada"), new JScrollPane(jta = new JTextArea(4, 0), JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS),
	new JButton("Guardar"), new JButton("Cancelar")};
private int[][] layoutdata = {
	{0, 0, 1, 1},{1, 0, 3, 1},
	{0, 1, 1, 1},{1, 1, 3, 1},
	{0, 2, 1, 1},{1, 2, 3, 1},
	{0, 3, 1, 1},{1, 3, 1, 1},
	{0, 4, 1, 1},{1, 4, 3, 3},
	{2, 7, 1, 1},{3, 7, 1, 1}};
public NoOne(){
	this.setTitle("NoOne Dialog");
	this.setDefaultCloseOperation(JDialog.HIDE_ON_CLOSE);
	this.setResizable(false);
	this.setModal(true);

	GridBagLayout gb = new GridBagLayout();
	GridBagConstraints gbc = new GridBagConstraints();
	gbc.insets = new Insets(3, 3, 3, 3);
	gbc.ipadx  = 10;

	jp = new JPanel(gb);
	jp.setBorder(BorderFactory.createCompoundBorder(BorderFactory.createEmptyBorder(8,8,10,10),BorderFactory.createCompoundBorder(BorderFactory.createTitledBorder(" Dados "),BorderFactory.createEmptyBorder(5,5,5,5))));

	for(int i=0;i<obj.length;i++){
		String s = obj[i].getClass().getName();
		gbc.gridx = layoutdata[i][0];
		gbc.gridy = layoutdata[i][1];
		gbc.gridwidth = layoutdata[i][2];
		gbc.gridheight = layoutdata[i][3];
		gbc.fill = GridBagConstraints.NONE;
		gbc.anchor = GridBagConstraints.WEST;
		if(s.equals("javax.swing.JLabel")==true){
			gb.setConstraints((JLabel)obj[i], gbc);
			jp.add((JLabel)obj[i]);
		}else if(s.equals("javax.swing.JTextField")==true){
			gbc.fill = GridBagConstraints.HORIZONTAL;
			gb.setConstraints((JTextField)obj[i], gbc);
			jp.add((JTextField)obj[i]);
		}else if(s.equals("javax.swing.JComboBox")==true){
			gb.setConstraints((JComboBox)obj[i], gbc);
			jp.add((JComboBox)obj[i]);
		}else if(s.equals("javax.swing.JScrollPane")==true){
			gbc.fill = GridBagConstraints.HORIZONTAL;
			gb.setConstraints((JScrollPane)obj[i], gbc);
			jp.add((JScrollPane)obj[i]);
		}else if(s.equals("javax.swing.JButton")==true){
			((JButton)obj[i]).setActionCommand(((JButton)obj[i]).getText());
			((JButton)obj[i]).addActionListener(this);
			gbc.anchor = GridBagConstraints.EAST;
			gb.setConstraints((JButton)obj[i], gbc);
			jp.add((JButton)obj[i]);
		}else{
			System.out.println(s);
		};
	};

	this.getContentPane().add(jp);

	this.pack();
	this.hide();
};
public void actionPerformed(ActionEvent ae){
	if(ae.getActionCommand().equals("Guardar")==true){
		System.out.println("Nome: " + ((JTextField)obj[1]).getText());
		System.out.println("Apelido: " + ((JTextField)obj[3]).getText());
		System.out.println("Telefone: " + ((JTextField)obj[5]).getText());
		System.out.println("Sexo: " + ((JComboBox)obj[7]).getSelectedItem());
		System.out.println("Morada: " + jta.getText());
	}else if(ae.getActionCommand().equals("Cancelar")==true){
		System.exit(0);
	};
};
public static void main(String[] args){
	new NoOne().show();
};
};

Cumps :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Peço desculpa, enganei-vos um pouco, o nome correcto do projecto é Matisse.

E não, não funciona directamente com SWT, é Swing based, alias, todo o Netbeans é baseado em Swing. Afinal é feito pela Sun, além de que o SWT vai contra a filosofia do Java e da Sun :P

No entanto existe uma versão paga, bem paga por sinal, do projecto Matisse que é destinada ao Eclipse. Não sei se essa será uma opção, nem faço ideia de quem é responsável por tal versão. Tomei conhecimento da sua existência por acaso, numa qualquer pesquisa no google, e nunca lhe dei muita importância.

Já agora, estive a tentar fazer uma interface, mas estava a demorar um pouco e não tinha muito tempo por isso devo colocar um exemplo de uma aplicação que tenha por aqui.

NoOne se estás a usar o Netbeans então deves poder fazer interfaces fácilmente. Experimenta criar uma novo ficheiro, mas em vez de escolheres "Java Class" escolhe "Java Form" e verifica se não te aparece logo o editor gráfico.

Aqui está uma aplicação onde podes ver o uso de layouts e a uma ou outra caixa de diálogo que faz o que queres.

Programa compilado: http://www.sergio-lopes.org/hyperlinks/J2Gether.zip

Código fonte: http://www.sergio-lopes.org/hyperlinks/src.zip

Toma especial atenção à caixa de diálogo que é usada para personalizar o tamanho do tabuleiro de jogo, é, se não me engano, o que pretendes.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

pois, n manjo nada disto... talvez esteja a querer dar passos demasiado grandes para os meus conhecimentos...

n sei como guardar as variaveis no valores pretendidos, como dar acçoes do genero voltar / guardar a botoes...

o projecto k eu tava a tentar elaborar consistia no seguinte:

1º menu inicial com: (inserir nova equipa, alterar equipa, inserir jogo, consultar ranking, sair)

tudo a trabalhar com ficheiros (ja sei +- como) e com uma interface agradavel, ou seja, assim essas janelas todas bonitas :)...

mas para os meus conhecimentos n parece k seja mto facil, mesmo com as vossas explicações...

no entanto, obg pela ajuda :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pessoalmente acho que só deves passar para interfaces gráficas depois de já dominares relativamente bem o Java em especial o POO.

Podes começar por fazer programas com menus em shell para teres uma ideia do funcionamento e da estruturação de um menu.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora