Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 7897177
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 3, 20262026-06-03T08:05:44+00:00 2026-06-03T08:05:44+00:00

I am using per-pixel transparency using AWTUtilities.setWindowOpaque() on JFrame , that contains JScrollPane .

  • 0

I am using per-pixel transparency using AWTUtilities.setWindowOpaque() on JFrame, that contains JScrollPane. When transparency is on, the scrolling in that pane is very slow and laggy, without it is not. Trying this on Windows 7 and JDK 6.

public class MainFrame extends JFrame {
    super();

    setUndecorated(true);
    AWTUtilities.setWindowOpaque(this, false); //this turns JScrollPane inside of this JFrame slow and laggy
}

Have anyone issued this? Thanks!

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-03T08:05:46+00:00Added an answer on June 3, 2026 at 8:05 am

    I can’t see any scrolling issue, nor to create testing scenario for code that is based on good Swing rules, this code is quite too hard for processor(s) and GPU, Java6, Win7 64b

    enter image description hereenter image description hereenter image description hereenter image description here

    from code

    import com.sun.awt.AWTUtilities;
    import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.image.BufferedImage;
    import javax.swing.*;
    import javax.swing.event.ChangeEvent;
    import javax.swing.event.ChangeListener;
    import javax.swing.table.TableModel;
    
    public class ViewPortFlickeringOriginal {
    
        private JFrame frame = new JFrame("Table");
        private JViewport viewport = new JViewport();
        private Rectangle RECT = new Rectangle();
        private Rectangle RECT1 = new Rectangle();
        private JTable table = new JTable(50, 3);
        private javax.swing.Timer timer;
        private int count = 0;
        private GradientViewPortOriginal tableViewPort;
        private static boolean loggerOpacity;
        private JPanel panel = new JPanel();
        private static JButton button;
    
        public ViewPortFlickeringOriginal() {
            tableViewPort = new GradientViewPortOriginal(table);
            viewport = tableViewPort.getViewport();
            viewport.addChangeListener(new ChangeListener() {
    
                @Override
                public void stateChanged(ChangeEvent e) {
                    if (tableViewPort.bolStart) {
                        RECT = table.getCellRect(0, 0, true);
                        RECT1 = table.getCellRect(table.getRowCount() - 1, 0, true);
                        Rectangle viewRect = viewport.getViewRect();
                        if (viewRect.intersects(RECT)) {
                            System.out.println("Visible RECT -> " + RECT);
                            tableViewPort.paintBackGround(new Color(250, 150, 150));
                        } else if (viewRect.intersects(RECT1)) {
                            System.out.println("Visible RECT1 -> " + RECT1);
                            tableViewPort.paintBackGround(new Color(150, 250, 150));
                        } else {
                            System.out.println("Visible RECT1 -> ???? ");
                            tableViewPort.paintBackGround(new Color(150, 150, 250));
                        }
                    }
                }
            });
            frame.add(tableViewPort);
            button = new JButton("Change Opacity for Java6 / Win7");
            button.setBounds(100, 100, 50, 50);
            button.setVisible(true);
            panel.add(button);
            loggerOpacity = true;
            button.addActionListener(new ActionListener() {
    
                @Override
                public void actionPerformed(ActionEvent evt) {
                    Object src = evt.getSource();
                    if (src == button && loggerOpacity) {
                        AWTUtilities.setWindowOpacity(frame, 0.80f);
                    }
                }
            });
            frame.add(panel, BorderLayout.SOUTH);
            frame.setPreferredSize(new Dimension(600, 300));
            frame.pack();
            frame.setLocation(50, 100);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            RepaintManager.setCurrentManager(new RepaintManager() {
    
                @Override
                public void addDirtyRegion(JComponent c, int x, int y, int w, int h) {
                    Container con = c.getParent();
                    while (con instanceof JComponent) {
                        if (!con.isVisible()) {
                            return;
                        }
                        if (con instanceof GradientViewPortOriginal) {
                            c = (JComponent) con;
                            x = 0;
                            y = 0;
                            w = con.getWidth();
                            h = con.getHeight();
                        }
                        con = con.getParent();
                    }
                    super.addDirtyRegion(c, x, y, w, h);
                }
            });
            frame.setVisible(true);
            start();
        }
    
        private void start() {
            timer = new javax.swing.Timer(100, updateCol());
            timer.start();
        }
    
        public Action updateCol() {
            return new AbstractAction("text load action") {
    
                private static final long serialVersionUID = 1L;
    
                @Override
                public void actionPerformed(ActionEvent e) {
    
                    System.out.println("updating row " + (count + 1));
                    TableModel model = table.getModel();
                    int cols = model.getColumnCount();
                    int row = 0;
                    for (int j = 0; j < cols; j++) {
                        row = count;
                        table.changeSelection(row, 0, false, false);
                        timer.setDelay(100);
                        Object value = "row " + (count + 1) + " item " + (j + 1);
                        model.setValueAt(value, count, j);
                    }
                    count++;
                    if (count >= table.getRowCount()) {
                        timer.stop();
                        table.changeSelection(0, 0, false, false);
                        java.awt.EventQueue.invokeLater(new Runnable() {
    
                            @Override
                            public void run() {
                                table.clearSelection();
                                tableViewPort.bolStart = true;
                            }
                        });
                    }
                }
            };
        }
    
        public static void main(String[] args) {
            java.awt.EventQueue.invokeLater(new Runnable() {
    
                @Override
                public void run() {
                    ViewPortFlickeringOriginal viewPortFlickering = new ViewPortFlickeringOriginal();
                }
            });
        }
    }
    
    class GradientViewPortOriginal extends JScrollPane {
    
        private static final long serialVersionUID = 1L;
        private final int h = 50;
        private BufferedImage img = null;
        private BufferedImage shadow = new BufferedImage(1, h, BufferedImage.TYPE_INT_ARGB);
        private JViewport viewPort;
        public boolean bolStart = false;
    
        public GradientViewPortOriginal(JComponent com) {
            super(com);
            viewPort = this.getViewport();
            viewPort.setScrollMode(JViewport.BLIT_SCROLL_MODE);
            viewPort.setScrollMode(JViewport.BACKINGSTORE_SCROLL_MODE);
            viewPort.setScrollMode(JViewport.SIMPLE_SCROLL_MODE);
            paintBackGround(new Color(250, 150, 150));
        }
    
        public void paintBackGround(Color g) {
            Graphics2D g2 = shadow.createGraphics();
            g2.setPaint(g);
            g2.fillRect(0, 0, 1, h);
            g2.setComposite(AlphaComposite.DstIn);
            g2.setPaint(new GradientPaint(0, 0, new Color(0, 0, 0, 0f), 0, h,
                    new Color(0.1f, 0.8f, 0.8f, 0.5f)));
            g2.fillRect(0, 0, 1, h);
            g2.dispose();
        }
    
        @Override
        public void paint(Graphics g) {
            if (img == null || img.getWidth() != getWidth() || img.getHeight() != getHeight()) {
                img = new BufferedImage(getWidth(), getHeight(), BufferedImage.TYPE_INT_ARGB);
            }
            Graphics2D g2 = img.createGraphics();
            super.paint(g2);
            Rectangle bounds = getViewport().getVisibleRect();
            g2.scale(bounds.getWidth(), -1);
            int y = (getColumnHeader() == null) ? 0 : getColumnHeader().getHeight();
            g2.drawImage(shadow, bounds.x, -bounds.y - y - h, null);
            g2.scale(1, -1);
            g2.drawImage(shadow, bounds.x, bounds.y + bounds.height - h + y, null);
            g2.dispose();
            g.drawImage(img, 0, 0, null);
        }
    }
    

    but I’m able to demonstrating lazy scrolling for JScrollPane contains others JComponents as is JTable or JList or JTextArea or JTextPane

    import java.awt.Color;
    import java.awt.Component;
    import java.awt.GridLayout;
    import java.awt.event.AdjustmentEvent;
    import java.awt.event.AdjustmentListener;
    import javax.swing.*;
    
    public class ListPanel extends JFrame {
    
        private static final long serialVersionUID = 1L;
    
        public ListPanel() {
            setLayout(new GridLayout(0, 2, 10, 10));
            DefaultListModel model = new DefaultListModel();
            model.addElement(createButtons("one"));
            model.addElement(createButtons("two"));
            model.addElement(createButtons("three"));
            model.addElement(createButtons("four"));
            model.addElement(createButtons("five"));
            model.addElement(createButtons("six"));
            model.addElement(createButtons("seven"));
            model.addElement(createButtons("eight"));
            model.addElement(createButtons("nine"));
            model.addElement(createButtons("ten"));
            model.addElement(createButtons("eleven"));
            model.addElement(createButtons("twelwe"));
            JList list = new JList(model);
            list.setCellRenderer(new PanelRenderer());
            JScrollPane scroll1 = new JScrollPane(list);
            final JScrollBar scrollBar = scroll1.getVerticalScrollBar();
            scrollBar.addAdjustmentListener(new AdjustmentListener() {
    
                @Override
                public void adjustmentValueChanged(AdjustmentEvent e) {
                    System.out.println("JScrollBar's current value = " + scrollBar.getValue());
                }
            });
            add(scroll1);
            JScrollPane scroll2 = new JScrollPane(createPanel());
            add(scroll2);        
            final JScrollBar scrollBar1 = scroll2.getVerticalScrollBar();
            scrollBar1.addAdjustmentListener(new AdjustmentListener() {
    
                @Override
                public void adjustmentValueChanged(AdjustmentEvent e) {
                    System.out.println("JScrollBar's current value = " + scrollBar1.getValue());
                }
            });
    
        }
    
        public static JPanel createPanel() {
            JPanel panel = new JPanel();
            panel.setLayout(new GridLayout(0, 1, 1, 1));
            panel.add(createButtons("one"));
            panel.add(createButtons("two"));
            panel.add(createButtons("three"));
            panel.add(createButtons("four"));
            panel.add(createButtons("five"));
            panel.add(createButtons("six"));
            panel.add(createButtons("seven"));
            panel.add(createButtons("eight"));
            panel.add(createButtons("nine"));
            panel.add(createButtons("ten"));
            panel.add(createButtons("eleven"));
            panel.add(createButtons("twelwe"));
            return panel;
        }
    
        public static JButton createButtons(String text) {
            JButton button = new JButton(text);
            return button;
        }
    
        public static void main(String[] args) {
            SwingUtilities.invokeLater(new Runnable() {
    
                @Override
                public void run() {
                    ListPanel frame = new ListPanel();
                    frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
                    //frame.pack();
                    frame.setSize(270, 200);
                    frame.setVisible(true);
                }
            });
        }
    
        class PanelRenderer implements ListCellRenderer {
    
            @Override
            public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
                JButton renderer = (JButton) value;
                renderer.setBackground(isSelected ? Color.red : list.getBackground());
                return renderer;
            }
        }
    }
    
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I'm using a framebuffer object with a color buffer attachment to do some per-pixel
I have a memory buffer corresponding to my screen resolution (1280x800 at 24-bits-per-pixel) that
If we take, say, 32-bits per pixel pictures using ARGB and ARGB_PRE (ARGB but
I am finding a way to draw image with per pixel alpha using UIView
I understand there is a limit to the number of requests per day using
Using Visual Studio 2005 As per the title; MSDN and google can't tell me,
I am using SQLite C# library and as per my requirement, before going to
I'm using jquery file uploader (per blueimp) and I'm wondering how I can direct
i'm using pdf2swf but i can't import external swf frame per frame in scrollpane
Using EF DbContext wrapped in interface(s), dependency injected per web request, to make sure

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.