tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
2
ZUGRIFFE
813
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Registriert seit
    Feb 2004
    Beiträge
    592
    Hi,

    weiß jemand ob es schon eine JPopup Menü Komponente gibt (Swing) die oben und unten jeweils Pfeile (hoch / runter) hat und dann bei MouseOver das Popup Menü scrollen?!

    Im Notfall würde auch ein JPopup Menü mit ScrollPane genügen.

    Gruß

    Romsl
     

  2. #2
    Avatar von RealHAZZARD
    RealHAZZARD RealHAZZARD ist offline Mitglied Brokat
    Registriert seit
    Mar 2005
    Beiträge
    388
    Davon wüsste ich nichts, aber du kannst ja dem PopMenu über insert(deinScrollPane,0) ein Scrollpane adden. Und in dem kannst du ja dann anstellen was du willst.
     
    Ich hab keine Ahnung.
    Aber davon jede Menge.

  3. #3
    Registriert seit
    Jun 2002
    Ort
    Saarbrücken (Saarland)
    Beiträge
    9.886
    Blog-Einträge
    29
    Hallo!

    hier mal ein Beispiel wie man sich selbst so ne Komponente bauen könnte:
    Code java:
    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
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    
    /**
     * 
     */
    package de.tutorials;
     
    import java.awt.BorderLayout;
    import java.awt.Dimension;
    import java.awt.Graphics;
    import java.awt.Graphics2D;
    import java.awt.Point;
    import java.awt.Polygon;
    import java.awt.RenderingHints;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;
     
    import javax.swing.BorderFactory;
    import javax.swing.JButton;
    import javax.swing.JComponent;
    import javax.swing.JFrame;
    import javax.swing.JList;
    import javax.swing.JPopupMenu;
    import javax.swing.JScrollPane;
    import javax.swing.ScrollPaneConstants;
     
    /**
     * @author Thomas.Darimont
     */
    public class CustomScrollingListExample extends JFrame {
     
      public CustomScrollingListExample() {
        super("CustomScrollingListExample");
        setDefaultCloseOperation(EXIT_ON_CLOSE);
     
        setSize(400, 300);
     
        final JPopupMenu popupMenu = new JPopupMenu("PopupMenu");
        JList list = new JList(new Object[] { "AAAA", "BBBB", "CCCCCCCC", "DDDD", "EEEE", "FFFF", "GGGG", "0000",
          "1111", "2222", "3333", "4444" });
        popupMenu.add(new CustomList(list));
     
        setVisible(true);
     
        addMouseListener(new MouseAdapter() {
          @Override
          public void mousePressed(MouseEvent e) {
            popupMenu.show(CustomScrollingListExample.this, e.getX(), e.getY());
          }
        });
     
      }
     
     
      /**
       * @param args
       */
      public static void main(String[] args) {
        new CustomScrollingListExample();
      }
     
      static class ScrollButton extends JButton {
     
        static enum ScrollButtonType {
          UP, DOWN
        };
     
        Polygon polygon;
        ScrollButtonType type;
     
     
        public ScrollButton(int width, int height, ScrollButtonType type) {
          this.type = type;
          setBorder(BorderFactory.createEmptyBorder());
          this.setPreferredSize(new Dimension(width, height));
          switch (type) {
            case DOWN:
              polygon = new Polygon(new int[] { 0, width / 2, width }, new int[] { 0, height, 0 }, 3);
              break;
            case UP:
              polygon = new Polygon(new int[] { 0, width / 2, width }, new int[] { height, 0, height }, 3);
              break;
          }
        }
     
     
        protected void paintComponent(Graphics graphics) {
          Graphics2D g = (Graphics2D) graphics;
          g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
          g.fillPolygon(polygon);
        }
      }
     
      static class CustomList extends JComponent {
        JList list;
        JScrollPane scrollPane;
        JButton btnScrollUp;
        JButton btnScrollDown;
     
     
        public CustomList(final JList list) {
          this.list = list;
          scrollPane = new JScrollPane(list);
          Dimension scrollPaneSize = new Dimension(list.getPreferredSize().width + 10, list.getFontMetrics(
            list.getFont()).getHeight()
            * list.getVisibleRowCount());
          scrollPane.setMaximumSize(scrollPaneSize);
          scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
          scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER);
          ActionListener actionListener = new ActionListener() {
            int viewIndex;
     
     
            public void actionPerformed(ActionEvent e) {
              if (btnScrollUp == e.getSource()) {
                System.out.println("up: " + viewIndex);
                if (viewIndex > 0) viewIndex--;
                Point point = list.getUI().indexToLocation(list, viewIndex);
                scrollPane.getViewport().setViewPosition(point);
     
              } else if (btnScrollDown == e.getSource()) {
                System.out.println("down: " + viewIndex);
                int listSize = list.getModel().getSize();
                int visibleRowCount = list.getVisibleRowCount();
                if (viewIndex <= listSize - visibleRowCount) {
                  viewIndex++;
                }
     
                Point point = list.getUI().indexToLocation(list, viewIndex);
                scrollPane.getViewport().setViewPosition(point);
              }
            }
          };
     
          btnScrollUp = new ScrollButton(list.getPreferredSize().width, 10,
            de.tutorials.CustomScrollingListExample.ScrollButton.ScrollButtonType.UP);
          btnScrollDown = new ScrollButton(list.getPreferredSize().width, 10,
            de.tutorials.CustomScrollingListExample.ScrollButton.ScrollButtonType.DOWN);
     
          btnScrollUp.addActionListener(actionListener);
          btnScrollDown.addActionListener(actionListener);
     
          setLayout(new BorderLayout());
     
          add(btnScrollUp, BorderLayout.NORTH);
          add(scrollPane, BorderLayout.CENTER);
          add(btnScrollDown, BorderLayout.SOUTH);
     
          setPreferredSize(new Dimension(scrollPane.getPreferredSize().width, btnScrollUp.getPreferredSize().height
            + scrollPane.getMaximumSize().height + btnScrollDown.getPreferredSize().height));
        }
      }
    }

    Gruß Tom
     
    Java rocks!
    How to become a good Java Programmer?
    Does IT in Java and .Net
    The only valid measurement of code quality: WTFs / minute
    Blog
    Xing
    Twitter

Ähnliche Themen

  1. Popup-Menü
    Von ts230 im Forum CSS
    Antworten: 3
    Letzter Beitrag: 01.03.09, 17:02
  2. Scrollfunktion
    Von Joonas im Forum Javascript & Ajax
    Antworten: 2
    Letzter Beitrag: 26.02.09, 20:48
  3. Popup Menü
    Von selle1 im Forum Flash Plattform
    Antworten: 4
    Letzter Beitrag: 08.04.07, 10:54
  4. 1.Popup-Menü lässt 2.Popup-Menü verschwinden
    Von NG-TEAM im Forum HTML & XHTML
    Antworten: 3
    Letzter Beitrag: 04.03.04, 17:35
  5. URL-POPUP Menü
    Von Califax im Forum HTML & XHTML
    Antworten: 2
    Letzter Beitrag: 23.07.03, 14:53