2011-09-26 2 views
1

두 번째 탭에서 원을 그리는 방법은 무엇입니까? 내가 가지고 있기 때문에, 모든 탭에 버튼, 내가 어떻게 그들을 seperate 수 있습니까?tabfolder의 secon 탭에 서클을 삽입하는 방법, 두 번째 탭에 액세스하는 방법

package shelllab; 

import org.eclipse.jface.dialogs.MessageDialog; 
import org.eclipse.swt.*; 
import org.eclipse.swt.widgets.*; 

import org.eclipse.swt.widgets.Button; 
import org.eclipse.swt.SWT; 
import org.eclipse.swt.graphics.Color; 
import org.eclipse.swt.graphics.GC; 
import org.eclipse.swt.graphics.Rectangle; 
import org.eclipse.swt.layout.FillLayout; 
import org.eclipse.swt.widgets.Display; 
import org.eclipse.swt.widgets.Shell; 
import org.eclipse.swt.widgets.TabFolder; 
import org.eclipse.swt.widgets.TabItem; 

public class Main { 

    /** 
    * @param args 
    */ 
    public static void main(String[] args) { 
     // TODO Auto-generated method stub 
     final Display display = new Display(); 
     final Shell shell = new Shell (display); 

      shell.setLayout(new FillLayout()); 
      shell.setText("ShellExample"); 
      shell.setSize(700,500); 

      final Color blue = display.getSystemColor(SWT.COLOR_BLUE); 
      Menu bar = new Menu (shell, SWT.BAR); 
      shell.setMenuBar (bar); 
      MenuItem f1 = new MenuItem (bar, SWT.CASCADE); 
      f1.setText ("&Файл"); 
      MenuItem f2 = new MenuItem (bar, SWT.CASCADE); 
      f2.setText ("&О программе"); 
      Menu s1 = new Menu (shell, SWT.DROP_DOWN); 
      f1.setMenu (s1); 
      MenuItem item = new MenuItem (s1, SWT.PUSH); 
      MenuItem item2 = new MenuItem (s1, SWT.PUSH); 
      MenuItem item3 = new MenuItem (s1, SWT.PUSH); 

      final TabFolder tabFolder = new TabFolder (shell, SWT.BORDER); 
      Rectangle clientArea = shell.getClientArea(); 
      tabFolder.setLocation (clientArea.x, clientArea.y); 
      tabFolder.setSize(400, 500); 
      for (int i=0; i<3; i++) { 
       TabItem item1 = new TabItem (tabFolder, SWT.NONE); 
      } 

      f2.addListener (SWT.Selection, new Listener() { 
       public void handleEvent (Event e) { 
        MessageDialog.openWarning(shell, "Внимание", "Демонстрация работы с shell - лаба №2"); 

       } 
      });  
      item.addListener (SWT.Selection, new Listener() { 
       public void handleEvent (Event e) { 
        //System.exit(0); 
        GC gc = new GC(tabFolder); 
        Rectangle bounds = tabFolder.getBounds(); 
        gc.setBackground(display.getSystemColor(SWT.COLOR_CYAN)); 
        gc.fillOval(50,50,200,200); 

       } 
      });  
      item2.addListener (SWT.Selection, new Listener() { 
       public void handleEvent (Event e) { 
        tabFolder.getItem(0).setText("This is example 1"); 
        Button b1 = new Button(tabFolder, SWT.PUSH); 
        b1.setSize(180, 40); 
        b1.setText("Выбрать цвет для tabfolder2"); 
        b1.setLocation(5, 25); 
        Button b12 = new Button(tabFolder, SWT.PUSH); 
        b12.setSize(180, 40); 
        b12.setText("Выбрать цвет для tabfolder3"); 
        b12.setLocation(5, 80); 



        final Combo c = new Combo(tabFolder, SWT.READ_ONLY); 
         c.setBounds(250, 35, 100, 20); 

         String items[] = { "red", "blue", "green"}; 
         c.setItems(items); 

         final Combo c2 = new Combo(tabFolder, SWT.READ_ONLY); 
          c2.setBounds(250, 90, 100, 20); 

          String items2[] = { "red", "blue", "green"}; 
          c2.setItems(items2); 
        b1.addListener(SWT.Selection, new Listener() { 
          public void handleEvent(Event e) { 
          //tabFolder.setForeground(blue); 
           if (c.getText().equals("red")) 
           { 


            //tabFolder.getItem(2).setControl(tabFolder); 

           } 
          } 
         }); 


        //tabFolder.getItem(0).setData(b1); 
       } 

      }); 

      item.setText("Выход Ctrl+Q"); 
      item.setAccelerator (SWT.MOD1 + 'Q'); 
      item2.setText("Пример №1 Ctrl+1"); 
      item2.setAccelerator (SWT.MOD1 + '1'); 
      item3.setText("Пример №2 Ctrl+2"); 
      item3.setAccelerator (SWT.MOD1 + '2'); 


      tabFolder.getItem(0).setText("Example1"); 
      tabFolder.getItem(1).setText("Example2"); 
      tabFolder.getItem(2).setText("Example3"); 


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

} 

두 번째 탭에서 원을 그리는 방법은 무엇입니까? 왜냐하면 나는 모든 탭에 버튼이 있기 때문에 어떻게 분리 할 수 ​​있습니까?

무료로 다운로드 할 수있는 "SWT"폼 디자이너입니까?

GC gc = new GC(tabFolder); 
Rectangle bounds = tabFolder.getBounds(); 
gc.setBackground(display.getSystemColor(SWT.COLOR_CYAN)); 
gc.fillOval(50,50,200,200); 
+1

문법의 구문, 그것은 하드 구문입니다. 왜. Pls이 이것을 expain. –

답변

1

는 SWT 디자이너의 많은이 아니지만, WindowBuilder pro는 좋은 선택이다 (그리고 무료) :

가 작성됩니다. 질문의 두 번째 부분으로

, 특히 방법

TabItem[] getItems(), SWT documentation for TabFolder을 체크 -
TabItem[] getSelection() 수신기에있는 항목입니다 TabItems의 배열을 반환 - 현재 선택되어 TabItems의 배열을 반환 수신기
TabItem getItem(int index)은 - 사람들에 의해

원하는 TabItem (예를 들어, 두 번째 탭)를 획득 한 다음에 사용할 수있는 수신기에서 주어진 제로 상대 인덱스의 항목을 반환인스턴스 생성. 귀하의 서클은 선택한 탭에만있을 것입니다 ..

관련 문제