2012-04-03 22 views
5

Estoy tratando de crear una GUI usando Java codificándola manualmente (sin usar herramientas GUI).Swing/AWT - Crear GUI programáticamente

Estoy tratando de crear algo como la imagen siguiente, pero no está saliendo como yo quiero. (Fue creado por una aplicación maqueta llamada lápiz)

enter image description here

Este es el código hasta ahora:

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


public class GUI extends JFrame { 

    public void buildGui() { 



     JFrame frame = new JFrame("Hotel TV Scheduler");  

       Container contentPane = frame.getContentPane(); 
       contentPane.setLayout(new FlowLayout()); 

     JPanel mainPanel = new JPanel(); 
     mainPanel.setLayout(new BorderLayout()); 

       JPanel listPanel = new JPanel(); 
       listPanel.setLayout(new FlowLayout()); 

       JTable chOneTable = new JTable(); 
       JTable chTwoTable = new JTable(); 
       JTable listTable = new JTable(); 

       JButton rmvChOneButton = new JButton("Remove Channel"); 
       JButton rmvChTwoButton = new JButton("Remove Channel"); 

       listPanel.add(chOneTable); 
       listPanel.add(chTwoTable); 
       listPanel.add(listTable); 
       listPanel.add(rmvChOneButton); 
       listPanel.add(rmvChTwoButton); 

       JPanel infoPanel = new JPanel(); 
       infoPanel.setLayout(new GridLayout()); 

       JLabel titleLabel = new JLabel("Title"); 
       JLabel genreLabel = new JLabel("Genre"); 
       JLabel durationLabel = new JLabel("Duration"); 
       JLabel actorLabel = new JLabel("Actor"); 
       JLabel directorLabel = new JLabel("Director"); 
       JLabel rentLabel = new JLabel("Rentable"); 
       JLabel synopsisLabel = new JLabel("Synopsis"); 

       JTextField txtTitle = new JTextField(); 
       JTextField txtGenre = new JTextField(); 
       JTextField txtDuration = new JTextField(); 
       JTextField txtActor = new JTextField(); 
       JTextField txtDirector = new JTextField(); 
       JTextField txtSynopsis = new JTextField(); 

       JCheckBox rentCB = new JCheckBox(); 

       infoPanel.add(titleLabel); 
       infoPanel.add(txtTitle); 
       infoPanel.add(genreLabel); 
       infoPanel.add(txtGenre); 
       infoPanel.add(durationLabel); 
       infoPanel.add(txtDuration); 
       infoPanel.add(actorLabel); 
       infoPanel.add(txtActor); 
       infoPanel.add(directorLabel); 
       infoPanel.add(txtDirector); 
       infoPanel.add(rentLabel); 
       infoPanel.add(rentCB); 
       infoPanel.add(synopsisLabel); 
       infoPanel.add(txtSynopsis); 



       contentPane.add(listPanel); 
       contentPane.add(infoPanel); 

       frame.setVisible(true); 


    } 


} 

Cualquier idea de lo Presentaciones pude utilizado para crear la instalación de la GUI o cómo lograrlo codificándolo?

+1

¿Cuál es el motivo para no querer usar una herramienta GUI? Hacen la vida mucho más fácil. – kevingreen

+2

@kevingreen: Una gran razón es ayudar a comprender mejor Swing antes de usar las herramientas de GUI. Luego, si tiene problemas para resolver algo con la herramienta GUI, le será mucho más fácil entender cómo solucionarlo. Recomiendo encarecidamente el póster original en este esfuerzo. 1+. Y 1+ a kevingreen por su excelente respuesta a continuación. –

+0

@HovercraftFullOfEels Siento lo contrario. Creo que ver una representación visual del diseño de Swing mientras construyes ayudará a Brian a ver cómo las cosas interactúan de una manera más fácil que los ciclos de prueba/compilación/error. Siempre puede mirar debajo del capó para ver el código (de todos modos, Eclipse/Netbeans). Netbeans te permitirá codificar cosas personalizadas y también renderizarlas instantáneamente en la herramienta GUI. Pero de cualquier manera, yo aliento el esfuerzo también. – kevingreen

Respuesta

3

Verificar A Visual Guide to Layout Managers. Eso lo ayudará con la selección de diseño.

Además, piense en usar paneles dentro de paneles. Cada uno con el diseño necesario para lograr el aspecto que necesita. Sin una herramienta de compilación de GUI, necesitará compilar/ejecutar/compilar/ejecutar ... para ver cómo se desarrollan las cosas.

+1

* "utilizando paneles dentro de paneles" * Consulte también este ejemplo de uso de [diseños anidados] (http://stackoverflow.com/a/5630271/418556). –

Cuestiones relacionadas