Skip to content

Instantly share code, notes, and snippets.

@denisab85
Created June 7, 2023 16:18
Show Gist options
  • Save denisab85/aa08db0132cd21179c0f12f6d5ec5e2d to your computer and use it in GitHub Desktop.
Save denisab85/aa08db0132cd21179c0f12f6d5ec5e2d to your computer and use it in GitHub Desktop.
package com.sample.layered;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.awt.*;
import static java.util.stream.IntStream.range;
public class LayeredPaneTest {
private JFrame frame;
private JTable table;
public LayeredPaneTest() {
initialize();
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
LayeredPaneTest window = new LayeredPaneTest();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
private void initialize() {
frame = new JFrame();
frame.setBounds(100, 100, 589, 509);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel();
frame.getContentPane().add(panel, BorderLayout.CENTER);
table = new JTable();
table.setSize(500, 200);
DefaultTableModel tableModel = new DefaultTableModel();
range(0, 10).forEach(i -> tableModel.addColumn("Column " + i));
range(0, 30).mapToObj(r -> range(0, 10).mapToObj(c -> "R" + r + " C" + c).toArray(String[]::new)).forEach(tableModel::addRow);
table.setModel(tableModel);
JLayeredPane layers = new JLayeredPane() {
@Override
public Dimension getPreferredSize() {
return table.getPreferredSize();
}
@Override
public void setSize(int width, int height) {
super.setSize(width, height);
table.setSize(width, height);
}
@Override
public void setSize(Dimension d) {
super.setSize(d);
table.setSize(d);
}
};
layers.setLayout(null);
layers.add(table, JLayeredPane.DEFAULT_LAYER, 0);
JPanel overlayPanel = new JPanel();
overlayPanel.setBackground(new Color(213, 134, 145, 123));
overlayPanel.setBounds(100, 100, 200, 150);
layers.add(overlayPanel, JLayeredPane.DRAG_LAYER, 0);
panel.setLayout(new BorderLayout(0, 0));
JScrollPane scrolling = new JScrollPane(layers);
scrolling.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
scrolling.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
scrolling.setViewportView(layers);
scrolling.setColumnHeaderView(table.getTableHeader());
panel.add(scrolling);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment