UTNianos

Versión completa: Programación de gui's anyone?
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Hola gente,la cosa es asi.Necesito algun tutorial no muy complejo para aprender a hacerles interfaces graficas a los programas.
La cosa es asi,quiero hacer un programita para android,pero para eso necesito crearle una interfaz gráfica (nisiquiera se si se pueden correr programas en "modo consola" en el android) y bueno,para hacerlos en windows/linux estaría bueno saberlo también.
Si pueden decirme que conocimientos previos se necesitan para hacer eso,mejor.Por ahora se HTML, algo (muy poco) de CSS y programar en imperativo/estructurado (C,PASCAL y algo de Python).


Saludos y gracias de antemano.
Aprendé a programar en java.

Y utilizá el SDK (osea, las libs. para programar) de Android. Ahora no me acuerdo, pero habia visto un poco de programacion de GUIs para android, con java, y era bastante copado...

La otra es que lo hagas en C, pero es bastante quilombete =P
(05-02-2011 21:40)Imakuni escribió: [ -> ]Aprendé a programar en java.

¿Y la interfaz gráfica se crea sola?

PS: No se objetos.
I don't know objects.
Objekte weiss ich nicht.
1 ) ninguna interfaz grafica se crea sola...

A menos que uses algo "on rails" (onda, Ruby On Rails, o CakePHP), y que tu app sean puros ABMs.

2 ) Aprendé. No es jodido. Si queres te enseño por chat.
1) Era una pregunta retórica mister.El tema del thread es aprender a hacer interfaces gráficas ya sea programando un .apk para android o un ejecutable de windows/linux.De momento es lo que me ocupa =P.

2)En android también podés programar en C/C++ usando ndk a eso apunto,a desarrollar en el lenguaje que ya se.Tener que aprender otro nuevo va más alla de lo que quiero/puedo hacer en este momento.Igual gracias por ofrecerte enseñarme =P.

3) ¿Supongo que programar una GUI para algo en C es lo mismo que para algo hecho en java verdad?
1 ) ah,osea que te chupa? =P.

2 ) Y, fijate.

Crear una ventana en C++, usando la API de windows: http://www.pro-gramas.com/articulos-ver_...112-9.html
Esto nada mas te va a servir para Windows.

Ahora, Java es multiplataforma.... y si quiero crear una ventana de "hola mundo" en Java, puedo hacerlo de dos formas:

La forma rapida:


JOptionPane.showMessageDialog(frame, "Hola mundo!");




O la forma lenta:



// Acá defino como va a ser una de mis ventanas.
public class MiVentana extends JFrame{

// Acá digo: "Cuando alguien quiera hacer una ventana del tipo 'MiVentana', voy a ponerle esta configuración "
public MiVentana(){
// Acá creo un pedazo de texto (label).
JLabel texto = new JLabel("Hola Mundo!");
// Acá creo un boton.
JButton destructorUniverso = new JButton();
// Que va a decir "Destruir todo el universo"
destructorUniverso.setText("Destruir todo el universo");
// Y que, cuando alguien le haga click o toque enter... (1)
destructorUniverso.addActionListener(new ActionListener(){
public void actionPerformed (ActionEvent e){
// (1).... cierre la aplicación!!!
System.exit(0);
}
});
// Bueno, ahora meto el Label en la ventana.
this.add(texto);
// y ahora, meto el boton destruyetodo en el universo.
this.add(destructorUniverso);
}
}


Acá definiste como queres que sea la ventana. Desde otro lado, creas la ventana con:

// Ok. quiero tener una ventana del tipo MiVentana.
MiVentana estaVentanaVoyAMostrar = new MiVentana();

// Ahora que la tengo creada en memoria, la quiero mostrar al usuario.
estaVentanaVoyAMostrar.setVisible(true);






Mirá ahora en C++, creo que es usando el MFC de Microsoft (Microsoft Foundation Class):
Spoiler: Mostrar

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
{
WNDCLASSEX wc; //clase estructura de la ventana
HWND hwnd; //var de la ventana
MSG Msg;

wc.cbSize = sizeof(WNDCLASSEX);
wc.style = 0;
wc.lpfnWndProc = WndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
wc.lpszMenuName = NULL;
wc.lpszClassName = g_szClassName;
wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION);

if(!RegisterClassEx(&wc))
{
MessageBox(NULL, "El registro de windows fallo!", "Error!",
MB_ICONEXCLAMATION | MB_OK);
return 0;
}

hwnd = CreateWindowEx(
WS_EX_CLIENTEDGE,
g_szClassName,
"Titulo: Ventana de Hola Mundo",
WS_SYSMENU ,
CW_USEDEFAULT, CW_USEDEFAULT, 500, 500,
NULL, NULL, hInstance, NULL);
// Ah, en la api de Windows, hay miles de funciones que reciben cinco o seis NULLs como parametros.

if(hwnd == NULL)
{
MessageBox(NULL, "No se creo el windows!", "Error!",
MB_ICONEXCLAMATION | MB_OK);
return 0;
}

ShowWindow(hwnd, nCmdShow);
updateWindow(hwnd);


while(GetMessage(&Msg, NULL, 0, 0) > 0)
{
TranslateMessage(&Msg);
DispatchMessage(&Msg);
}
return Msg.wParam;
}

[Esto, solo para crear la Ventana, despues tenes que codear la logica de la misma... en java, solo eran dos lineas... acordate!]




Te recomiendo que dejes C/C++, si queres hacer un frontend grafico... C/C++ se utiliza para software que necesite mucho procesamiento. Lo que se suele hacer, en el caso de que SI O SI tenga que usarse C/C++, es crear toda la capa logica en estos lenguajes, crear las "pantallitas" en algun lenguaje mas copado (java, python, ruby, C#), y luego comunicar una aplicación con otra (en el caso de que sea una app. desktop, java te da un framework re loco para comunicarte con procesos en C).

Ademas, despues tenes miles de frameworks copados, dependiendo de la aplicación que hagas...

El de Android para java, hacia un macheo re loco, y te generaba XMLs locos. Realmente estaba copado.
Para Desktop, el mundo de java está dividido en Swing (el que puse yo mas arriba, el default), o SWT (eclipse está hecho con SWT). Tenes AWT, que es una verga atomica y vieja y sirvió historicamente como base para crear Swing (osea, no uses AWT).

Si no, podes irte por otros lados... para todo lo que es WEB, tenes millones de formas de hacerlo. Wicket, JavaFX, GWT, HTML puro,flex,etc...

Como ultimo dato, si tu app es consiste solo de ABMs simples, podes usar el framework Spring Roo, que basicamente te automatiza casi toda la aplicación, codeando casi nada, y dandote chances de tocar el codigo que te genera, para agregarle cosas copadas. Creo que Grails tambien tiene esa capacidad de generarte todo, mediante configuración y "convenciones de nombres", pero realmente de Grails solo conozco el nombre.
Nooooo C++ es demasiado para lo que necesitás =).

Para Android, te recomiendo arrancar por acá, yo empecé hace unos días con esto: http://developer.android.com/guide/topics/ui/index.html

Tutoriales en general: http://developer.android.com/guide/index.html y particularmente sobre UI: http://developer.android.com/resources/t...index.html

Saludos!
las páginas que puso mi tocayo son las que venía a postear, así que me despacho con una cita:

Cita:Hoy en día haciendo una aplicación para Android o iOS vas a ganar mucho más dinero que aportando una línea de código para Gimp. Es simple, una app de teléfono es bien pelotuda, no requiere saber mucho ni aprender nada complejo. Arreglar algo en un proyecto enorme como OpenOffice o Gimp requiere ser bueno en lo tuyo y saber... algo que si hoy en día no se paga bien, no se consigue.
URLs de referencia