Solucionado, sería aproximadamente así:
Código:
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.GraphicsEnvironment;
import java.awt.Rectangle;
import java.awt.Color;
import java.awt.Toolkit;
import java.awt.Dimension;
public class TestResolution extends JFrame{
private JPanel contentPane;
private static Rectangle bounds;
private JPanel firstPanel;
private JPanel secondPanel;
private JPanel cardPanel;
private JPanel thirdPanel;
private static float anchuraContentPane = 1024;
private static float alturaContentPane = 900;
private static float relacionX;
private static float relacionY;
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Toolkit.getDefaultToolkit().getScreenSize();
GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment();
bounds = env.getMaximumWindowBounds();
relacionX = ((int)bounds.getWidth()/anchuraContentPane);
relacionY = ((int)bounds.getHeight()/alturaContentPane);
TestResolution frame = new TestResolution();
frame.pack();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
public TestResolution() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setResizable(false);
contentPane = new JPanel();
setContentPane(contentPane);
contentPane.setPreferredSize(new Dimension((int) bounds.getWidth(), (int) bounds.getHeight()));
contentPane.setLayout(null);
firstPanel = new JPanel();
firstPanel.setBounds(5, 5,Math.round(400*relacionX),Math.round(250*relacionY));
firstPanel.setBackground(Color.blue);
firstPanel.setLayout(null);
contentPane.add(firstPanel);
cardPanel = new JPanel();
cardPanel.setBounds(
Math.round(firstPanel.getWidth()+10),
Math.round(5*relacionY),
Math.round(580*relacionX)+5,
Math.round(700*relacionY));
cardPanel.setBackground(Color.black);
cardPanel.setLayout(null);
contentPane.add(cardPanel);
secondPanel = new JPanel();
secondPanel.setBounds(
5,
Math.round((firstPanel.getHeight()+10)),
Math.round(200*relacionX),
Math.round(450*relacionY));
secondPanel.setBackground(new Color(0, 0, 0));
secondPanel.setLayout(null);
contentPane.add(secondPanel);
thirdPanel = new JPanel();
thirdPanel.setBounds(
Math.round((secondPanel.getWidth()+10)),
Math.round((firstPanel.getHeight()+10)),
Math.round(195*relacionX),
Math.round(450*relacionY));
thirdPanel.setBackground(new Color(0, 0, 0));
contentPane.add(thirdPanel);
}
}
Lo que pasa , es que en Windows no me reconoce taskbar, en linux sí.
Intenté usar GraphicsConfiguration pero no supe usarla...