2009-10-27 10 views
8

alt textजावा SWT आवेदन

मैं एक जावा/SWT केवल Windows पर चल रहे एप्लिकेशन के विकास विरासत में मिला है के लिए एक गूगल-क्रोम की तरह शीर्षक पट्टी क्रियान्वित करने का तरीका। सुविधा अनुरोधों कि मैं गुंजाइश की जरूरत में से एक SWT खिड़कियों शीर्षक पट्टी के स्थान पर एक गूगल-क्रोम प्रकार शीर्षक पट्टी है। एप्लिकेशन के टैब विंडो नियंत्रण बटन के समान स्तर पर दिखाई देते हैं।

  • एक Windows विजेट कस्टम रूप प्रतिपादन और के रूप में मेनू के लिए विरोध टैब प्रबंधित करने में सक्षम लिखें:

    मेरे समझ है कि मैं करने की आवश्यकता होगी है।

  • विंडोज विजेट को जेएनआई
  • के माध्यम से जावा में उपयोग के लिए एक डीएल के रूप में बेनकाब करें, इसे लपेटने के लिए कस्टम एसडब्ल्यूटी विजेट लिखें और टैब प्रबंधन इंटरफ़ेस का पर्दाफाश करें।

मुझे जावा प्रोग्रामिंग, स्विंग/एडब्ल्यूटी के साथ जीयूआई प्रोग्रामिंग और गैर-जीयूआई सी # प्रोग्रामिंग के साथ बहुत अनुभव है। विंडोज जीयूआई प्रोग्रामिंग और एसडब्ल्यूटी मेरे लिए नए हैं इसलिए मुझे यकीन नहीं है कि कहां से शुरू करना है। अब तक का सबसे अच्छा पाया गया है 2001 के लेख writing your own SWT widget पर है।

मेरे सबसे बड़ी अज्ञात एक कस्टम विंडोज़ अनुप्रयोग खिड़की लागू करने के लिए सबसे अच्छा तरीका है।

+0

तरह से मैं समझता हूँ कि यह है कि यह लगभग SWT के साथ ऐसा करना असंभव हो जाएगा के रूप में SWT काफी सबसे मंच-नास्तिक GUI उपकरण, और इस तरह सबसे मानकीकृत है। क्रोम जैसे जीयूआई को ऑपरेटिंग सिस्टम के साथ बहुत अधिक प्रत्यक्ष इंटरफेस की आवश्यकता होती है क्योंकि यह मानक ओएस जीयूआई तत्वों का उपयोग नहीं करता है। आपको प्रभावी ढंग से अपना स्वयं का टैब (और शायद विंडो) प्रबंधक लिखने की आवश्यकता होगी। – HalfBrian

+1

@ हाफब्रियन: असल में स्विंग सबसे अधिक मंच अज्ञेयवादी है क्योंकि यह सभी घटकों को स्वयं ही प्रस्तुत करता है, जबकि एसडब्ल्यूटी ओएस घटकों का उपयोग करता है। स्वाभाविक रूप से यह आपकी बाकी टिप्पणी को कम सत्य नहीं बनाता :) –

उत्तर

8

आपको एक शीर्षक ध्वज के बिना एक शैल उदाहरण बनाने और उसके बाद मैन्युअल रूप से Google-क्रोम की तरह टैब प्रदान कर सकते हैं। इस तरह आप non-rectangular windows

+0

धन्यवाद यूजीन, यह मुझे सही दिशा में आगे बढ़ रहा है। – MartyC

2

ऐसी चीजों से निपटने के दौरान भी बना सकते हैं जो SWT की जेएनआई परत में अभी तक नहीं हैं, आपको हमेशा याद रखना चाहिए कि आप जल्दी से JNA के साथ चीजों को प्रोटोटाइप कर सकते हैं। जब जेएनए प्रोटोटाइप, तो आप या तो एसडब्ल्यूटी के मूल इंटरफेस का विस्तार कर सकते हैं या अपनी अलग जेएनआई परत बना सकते हैं (यह एक ऐसा दृष्टिकोण है जो एसडब्ल्यूटी कार्बन/कोको विजेट्स से निपटने के दौरान कई बार मेरे लिए अच्छा काम करता है)

+0

मैंने उस परियोजना को पहले धन्यवाद नहीं देखा था, धन्यवाद। – MartyC

0

मैं बनाने की सलाह देता हूं एक ट्रिम के बिना एक खोल:

new Shell (display, SWT.NO_TRIM); 

यह शीर्षक पट्टी के बिना एक खोल बनाएगा। इसके बाद आप अपने स्वयं के करीबी/न्यूनतम/अधिकतम बटन बना सकते हैं।

यहाँ एक उदाहरण है कि शीर्षक पट्टी व्यापार के बिना एक अकेला प्रगति बार spawns है।

enter image description here

import org.eclipse.swt.SWT; 
import org.eclipse.swt.layout.FormAttachment; 
import org.eclipse.swt.layout.FormData; 
import org.eclipse.swt.layout.FormLayout; 
import org.eclipse.swt.widgets.Display; 
import org.eclipse.swt.widgets.ProgressBar; 
import org.eclipse.swt.widgets.Shell; 

public class ProgressBarGui { 

    Display display; 
    Shell shell; 

    public static void main (String [] args) { 
     final Display display = new Display(); 
     final Shell shell = new Shell (display, SWT.NO_TRIM); 


     //Something to put into shell. 
     shell.setLayout (new FormLayout()); 

     ProgressBar proBar = new ProgressBar (shell, SWT.SMOOTH); 
     proBar.setSelection (50); 
     FormData progBarData = new FormData (100, 20); 
     progBarData.top = new FormAttachment (0); 
     progBarData.left = new FormAttachment (0); 
     proBar.setLayoutData (progBarData); 

     //recompute shell's size and position to fit widget. 
     shell.pack(); 

     shell.open(); 
     while (!shell.isDisposed()) { 
      if (!display.readAndDispatch()) 
       display.sleep(); 
     } 
     // region.dispose(); 
     display.dispose(); 
    } 

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