2012-04-03 12 views
5

बनाना मैं जावा का उपयोग करके जीयूआई बनाने की कोशिश कर रहा हूं (इसे GUI टूल्स का उपयोग किए बिना)।स्विंग/एडब्ल्यूटी - जीयूआई प्रोग्रामेटिक रूप से

मैं नीचे दी गई तस्वीर की तरह कुछ बनाने की कोशिश कर रहा हूं, लेकिन यह उतना बाहर नहीं आ रहा है जितना मैं चाहता हूं।

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


    } 


} 

क्या लेआउट मैं जीयूआई सेटअप या कैसे करने के लिए बनाने के लिए इस्तेमाल कर सकता है की कोई भी विचार:

enter image description here

इस कोड को अब तक है (यह पेंसिल कहा जाता है एक mockup आवेदन द्वारा बनाया गया था) इसे कोडिंग करके प्राप्त करें?

+1

जीयूआई उपकरण का उपयोग नहीं करना चाहते हैं? वे जीवन को बहुत आसान बनाते हैं। – kevingreen

+2

@kevingreen: जीयूआई उपकरणों का उपयोग करने से पहले स्विंग को बेहतर समझने में मदद करने के लिए एक शानदार कारण है। फिर यदि आपको जीयूआई उपकरण का उपयोग करके कुछ हल करने में परेशानी हो रही है, तो आपको इसे ठीक करने के तरीके को समझने में एक आसान समय होगा। मैं इस प्रयास में मूल पोस्टर को दृढ़ता से प्रोत्साहित करता हूं। 1 +। और 1+ केविनिंग्रीन को उनके उत्कृष्ट उत्तर के लिए नीचे। –

+0

@ होवरक्राफ्टफुलऑफेल मैं विपरीत महसूस करता हूं। मुझे लगता है कि स्विंग लेआउट के दृश्य दृश्य को देखने के रूप में आप ब्रायन को यह देखने में मदद करेंगे कि चीजें/संकलन/त्रुटि चक्रों की तुलना में चीजें आसान फैशन में कैसे बातचीत करती हैं। कोड को देखने के लिए आप हमेशा हुड के नीचे देख सकते हैं (ग्रहण/नेटबीन्स वैसे भी)। नेटबीन आपको कस्टम कोड चीजों की अनुमति देगा और उन्हें तुरंत जीयूआई टूल में भी प्रस्तुत करेगा। लेकिन किसी भी तरह से, मैं भी प्रयास को प्रोत्साहित करता हूं। – kevingreen

उत्तर

3

A Visual Guide to Layout Managers देखें। इससे आपको लेआउट चयन में मदद मिलेगी।

इसके अलावा, पैनलों के पैनलों का उपयोग करने के बारे में सोचें। जिसकी आपको आवश्यकता है उसे प्राप्त करने के लिए आवश्यक लेआउट के साथ प्रत्येक। एक जीयूआई बिल्डिंग टूल के बिना आपको यह देखने के लिए कि चीजें कैसे बिछा रही हैं, संकलित/चलाने/संकलित/चलाने की आवश्यकता होगी।

+1

* "पैनलों के भीतर पैनलों का उपयोग करना" * [नेस्टेड लेआउट] (http://stackoverflow.com/a/5630271/418556) का उपयोग करने का यह उदाहरण भी देखें। –

संबंधित मुद्दे