2011-02-06 4 views
0

Pleae가이 문제를 해결하는 데 도움이됩니다 ... JFrames로 디자인 된 페이지가 있습니다. 이제 페이지 상단에서 텍스트를 스크롤해야합니다 .... 코드를 입력 해주세요 ...자바에서 텍스트 스크롤

+3

http://www.abbeyworkshop.com/howto/java/ta_scroll/index.html

은 우리가 당신을 위해 몇 가지 코드를 채찍질하면서 앉으세요 "... 나에게 코드를 제공하십시오." 오, 그리고 기다리는 동안 커피와 도넛을 먹는다면 ... –

답변

1

확인이 밖으로, 주석하고 거의 확실 도움 당신.

+0

고맙습니다. –

1
ScrollText s= new ScrollText("ello Everyone."); 
    jLabel3.add(s);//add it to jLabel 


    public class ScrollText extends JComponent { 
     private BufferedImage image; 
     private Dimension imageSize; 
     private volatile int currOffset; 
     private Thread internalThread; 
     private volatile boolean noStopRequested; 
     public ScrollText(String text) { 
     currOffset = 0; 
     buildImage(text); 
     setMinimumSize(imageSize); 
     setPreferredSize(imageSize); 
     setMaximumSize(imageSize); 
     setSize(imageSize); 
     noStopRequested = true; 
     Runnable r = new Runnable() { 
     public void run() { 
     try { 
     runWork(); 
     } catch (Exception x) { 
     x.printStackTrace(); 
     } 
    } 
    }; 

    internalThread = new Thread(r, "ScrollText"); 
    internalThread.start(); 
    } 

    private void buildImage(String text) { 
    RenderingHints renderHints = new RenderingHints(
    RenderingHints.KEY_ANTIALIASING, 
    RenderingHints.VALUE_ANTIALIAS_ON); 

    renderHints.put(RenderingHints.KEY_RENDERING, 
    RenderingHints.VALUE_RENDER_QUALITY); 

    BufferedImage scratchImage = new BufferedImage(1, 1, 
    BufferedImage.TYPE_INT_RGB); 

    Graphics2D scratchG2 = scratchImage.createGraphics(); 
    scratchG2.setRenderingHints(renderHints); 

    Font font = new Font("Serif", Font.BOLD | Font.ITALIC, 24); 

    FontRenderContext frc = scratchG2.getFontRenderContext(); 
    TextLayout tl = new TextLayout(text, font, frc); 
    Rectangle2D textBounds = tl.getBounds(); 
    int textWidth = (int) Math.ceil(textBounds.getWidth()); 
    int textHeight = (int) Math.ceil(textBounds.getHeight()); 

     int horizontalPad = 600; 
     int verticalPad = 10; 

     imageSize = new Dimension(textWidth + horizontalPad, textHeight 
     + verticalPad); 

     image = new BufferedImage(imageSize.width, imageSize.height, 
    BufferedImage.TYPE_INT_RGB); 

    Graphics2D g2 = image.createGraphics(); 
     g2.setRenderingHints(renderHints); 

     int baselineOffset = (verticalPad/2) - ((int) textBounds.getY()); 

     g2.setColor(Color.BLACK); 
     g2.fillRect(0, 0, imageSize.width, imageSize.height); 

     g2.setColor(Color.GREEN); 
     tl.draw(g2, 0, baselineOffset); 

      // Free-up resources right away, but keep "image" for 
      // animation. 
     scratchG2.dispose(); 
     scratchImage.flush(); 
     g2.dispose(); 
    } 
     public void paint(Graphics g) { 
     // Make sure to clip the edges, regardless of curr size 
      g.setClip(0, 0, imageSize.width, imageSize.height); 

      int localOffset = currOffset; // in case it changes 
      g.drawImage(image, -localOffset, 0, this); 
       g.drawImage(image, imageSize.width - localOffset, 0, this); 

         g.setColor(Color.black); 
      g.drawRect(0, 0, imageSize.width - 1, imageSize.height - 1); 
     } 
       private void runWork() { 
       while (noStopRequested) { 
       try { 
        Thread.sleep(10); // 10 frames per second 

         // adjust the scroll position 
          currOffset = (currOffset + 1) % imageSize.width; 

          // signal the event thread to call paint() 
          repaint(); 
          } catch (InterruptedException x) { 
           Thread.currentThread().interrupt(); 
         }   
        } 
        } 

      public void stopRequest() { 
       noStopRequested = false; 
       internalThread.interrupt(); 
        } 

       public boolean isAlive() { 
        return internalThread.isAlive(); 
          } 
        }