Created
June 7, 2023 16:18
-
-
Save denisab85/aa08db0132cd21179c0f12f6d5ec5e2d to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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