tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
2
ZUGRIFFE
4676
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    fischmir fischmir ist offline Rookie
    Registriert seit
    Jul 2005
    Beiträge
    9
    Hallöchen,

    da ich immer wieder im Netz über diese Seite stolpere, dachte ich mir ich suche mal hier Hilfe...

    Ich habe ein Tabelle mit mehreren Spalten. Beim klicken auf die rechte Maustase öffnet sich ein Menu mit mehreren Möglichkeiten wie BEarbeiten, Zeile löschen etc.

    Unter anderem soll dort auch die Möglichkeit "Spalte löschen" stehen. Daraufhin soll ich ein weiteres Menu aus den Namen der derzeit vorhanden Spaltennamen generieren. Die Abfrage der Namen ist kein Problem...aber ich kriege einfach kein zweites Menu mit Namen zum voscheinen...


    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    
    public void mouseDown(MouseEvent e) 
                {
                    if(e.button == 3)
                    {
                        Menu rightButton = new Menu(myTable);
                        MenuItem edit = new MenuItem(rightButton,SWT.CASCADE);
                        edit.setText("Edit");
                        
                        MenuItem sep = new MenuItem(rightButton,SWT.SEPARATOR);
                        
                        MenuItem newRow = new MenuItem(rightButton,SWT.CASCADE);
                        newRow.setText("New Row");
                        
                        MenuItem delRow = new MenuItem(rightButton,SWT.CASCADE);
                        delRow.setText("Remove Row");
                        
                        sep = new MenuItem(rightButton,SWT.SEPARATOR);
                        
                        final MenuItem delColumn = new MenuItem(rightButton,SWT.CASCADE);
                        delColumn.setText("Remove Column");
        
                        edit.addSelectionListener(new SelectionListener()
                        {
                            public void widgetSelected(SelectionEvent e)
                            {
                                pressedEditMarked();    
                            }
        
                            public void widgetDefaultSelected(SelectionEvent e)
                            {
                                // TODO Auto-generated method stub
                                
                            }   
                        });
                        
                        newRow.addSelectionListener(new SelectionListener()
                        {
                            public void widgetSelected(SelectionEvent e)
                            {
                                pressedNewRow();    
                            }
                                public void widgetDefaultSelected(SelectionEvent e)
                            {       
                            }       
                        });
                        
                        delRow.addSelectionListener(new SelectionListener()
                        {
                            public void widgetSelected(SelectionEvent e)
                            {
                                //pressedDeleteRow();
                                Menu lang = new Menu(delColumn);
                                
                                MenuItem de = new MenuItem(lang,SWT.CASCADE);
                                de.setText("de");
                                MenuItem en = new MenuItem(lang,SWT.CASCADE);
                                en.setText("en");
                                lang.setVisible(true);
                            }
                            public void widgetDefaultSelected(SelectionEvent e)
                            {
                                // TODO Auto-generated method stub  
                            }
                        });
                        
                        delColumn.addSelectionListener(new SelectionListener()
                        {
                            public void widgetSelected(SelectionEvent e)
                            {
                                //pressedDeleteColumn(ini);                     
                            }
                            public void widgetDefaultSelected(SelectionEvent e)
                            {
                                // TODO Auto-generated method stub  
                            }
                        });
                        
                        rightButton.setVisible(true);
                    }
                    
                }

    Muss ich diesen kleinen Pfeil, der in solchen menüs immer auftaucht auch noch selber einfügen?
    Ich habe nun den ArmListener hinzugefügt, und habe den Pfeil...aber es erscheint immernoch kein Menü?!

    Gruß
    Christian
    Geändert von fischmir (13.07.05 um 12:43 Uhr)
     

  2. #2
    Registriert seit
    Apr 2004
    Ort
    Ruhrgebiet
    Beiträge
    1.582
    Sorry, mit SWT kann ich leider nicht dienen.
     

  3. #3
    fischmir fischmir ist offline Rookie
    Registriert seit
    Jul 2005
    Beiträge
    9
    Ok, snape, dann möchte ich dir auch auf die Beine helfen.

    So könntes es aussehen, nicht elegant, aber alles drin, für jeden der dieses Problem auch hat...
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    
        public void mouseDown(MouseEvent e) 
                {
                    if(e.button == 3)//rechte Maustaste
                    {
                        final Menu rightButton = new Menu(myTable);
                        MenuItem edit = new MenuItem(rightButton,SWT.CASCADE);
                        edit.setText("Edit");
                        
                        MenuItem sep = new MenuItem(rightButton,SWT.SEPARATOR);
                        
                        MenuItem newRow = new MenuItem(rightButton,SWT.CASCADE);
                        newRow.setText("New Row");
                        
                        MenuItem delRow = new MenuItem(rightButton,SWT.CASCADE);
                        delRow.setText("Remove Row");
                        
                        sep = new MenuItem(rightButton,SWT.SEPARATOR);
                        
                        final MenuItem delColumn = new MenuItem(rightButton,SWT.CASCADE);
                        delColumn.setText("Remove Column");
                        
                        /*
                         * UNtermenu generieren 
                         */
                        final Menu lang = new Menu(rightButton);
                        
                        int countLang = myTable.getColumnCount();
                        final TableColumn tcs[] = myTable.getColumns();
                        MenuItem mis [] = new MenuItem [countLang];
                        
                        for(int i=0; i< countLang; i++)
                        {
                            final String ini = tcs[i].getText();
                            final TableColumn tc = tcs[i];
                            mis[i] = new MenuItem(lang,SWT.CASCADE);
                            mis[i].setText(ini);
                            mis[i].addSelectionListener(new SelectionListener()
                            {
                                public void widgetSelected(SelectionEvent e) 
                                {
                                    //removeLanguage, wenn angeklickt!
                                    b.removeLanguage(ini);
                                    int index = myTable.indexOf(tc);
                                    System.out.println("Spaltennummer: "+index);
                                    //falls letzte Spalte, dann muss alles genullt werden
                                    if(tcs.length==1)
                                    {
                                        //letzte Spaltegelöscht
                                        //dann alle inhalte löschn,
                                        System.out.println("Letzte Spalte gelöscht");
                                        tc.setWidth(3);
                                        tc.dispose();
                                        myTable.clearAll();
                                        myTable.removeAll();
                                    }
                                    else
                                    {
                                        //spalte gelöscht
                                        tc.dispose();
                                        System.out.println("Spalte entfernt.");
                                    }
                                    //durch das löschen einer Spalte, kann NICHT der fall auftreten
                                    //das noch eine Spalte leer wird, daher nur removeEmptyRows
                                    removeEmptyRows();
                                    tc.setWidth(10);
                                }
                                public void widgetDefaultSelected(SelectionEvent e) 
                                {
                                                
                                }
                            });
                        }
                        
                        delColumn.setMenu(lang);

    nun gut...um es lauffähig zu machen, gebraucht es noch ein paar Zeilen, aber das WIE sollte dann benatwortet sein

    PS: am wichitgsten ist die letzte Zeile! Die darf nicht mit in die anonyme Klasse genommen werden, da das Event des SelectionListeners mit jeder Mausbewegung auf dem MenItem ausgelöst wird. So würde sich das Menu nach jeder Bewegung neu zeichnen und das sieht nicht gut aus.

    Viele Grüße
    fischmir
     

Ähnliche Themen

  1. DW-CS4 Problem: Spry-Menu und IE - immer noch !
    Von kbn im Forum HTML-Editoren
    Antworten: 19
    Letzter Beitrag: 31.12.09, 18:20
  2. Rechte MAustaste in Div
    Von notebook20000 im Forum Javascript & Ajax
    Antworten: 5
    Letzter Beitrag: 10.07.07, 08:13
  3. Menu unter rechter Maustaste
    Von DerMilchmann im Forum Javascript & Ajax
    Antworten: 3
    Letzter Beitrag: 18.09.06, 10:48
  4. flashfilm rechte maustaste
    Von wuerger_05 im Forum Flash Plattform
    Antworten: 3
    Letzter Beitrag: 07.09.06, 09:10
  5. Menu bei rechter Maustaste
    Von Franz im Forum Flash Plattform
    Antworten: 4
    Letzter Beitrag: 09.01.02, 12:55