2012-04-03 15 views
5

GUIツールを使用せずに手作業でJavaを使用してGUIを作成しようとしています。Swing/AWT - プログラムによるGUIの作成

私は下の図のようなものを作成しようとしていますが、私が望むようには出てこないのです。 (これは、鉛筆と呼ばれるモックアップアプリケーションで作成された)

enter image description here

これは、これまでのコードです:

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); 


    } 


} 

私はGUIの設定や方法を作成するために使用することができるもののレイアウトの任意のアイデアそれをコーディングして実現しますか?

+1

GUIツールを使いたくない理由は何ですか?彼らは人生を楽にします。 – kevingreen

+2

@kevingreen:GUIツールを使用する前に、Swingの理解を深めるための1つの大きな理由があります。その後、GUIツールを使用して何かを解決するのに問題がある場合は、それを修正する方法を理解するのにずっと簡単になります。私は、この取り組みの元のポスターを強く奨励します。 1+。そして彼の優れた答えはkevingreenに1+です。 –

+0

@HovercraftFullOfEels私は反対を感じる。あなたがビルドしたときにSwingレイアウトを視覚的に表示することは、Brianが物事がどのようにやり取りするかをコンパイル/エラーサイクルよりも簡単なやりかたで見るのに役立ちます。あなたはいつもコード(Eclipse/Netbeansとにかく)を見るためにフードを見ることができます。 Netbeansを使用すると、カスタムコードを作成してGUIツールで即座にレンダリングすることができます。 どちらにせよ、私は努力も奨励しています。 – kevingreen

答えて

3

チェックA Visual Guide to Layout Managers。レイアウトの選択に役立ちます。

また、パネル内でパネルを使用することも考えてください。あなたが必要とする外観を達成するために必要なレイアウトをそれぞれ持っています。 GUI構築ツールがなければ、コンパイル/実行/コンパイル/実行する必要があります。

+1

* "パネル内のパネルを使用する" * [ネストされたレイアウト](http://stackoverflow.com/a/5630271/418556)を使用したこの例も参照してください。 –

関連する問題