public class Gui_Relativa extends JFrame {
private double ancho;
private double alto;
public Gui_Relativa() {
Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
//Queremos que la interfaz al completo ocupe 3/4 partes del total de la pantalla
ancho = dim.getWidth() - (dim.getWidth() / 4);
alto = dim.getHeight() - dim.getHeight() / 4;
setLayout(new BoxLayout(getContentPane(), BoxLayout.Y_AXIS));
add(new PanelTitulo());
add(new PanelTexto());
add(new PanelBoton());
setTitle("Medidas absolutas");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pack();
setLocationRelativeTo(null);
setVisible(true);
}
private class PanelTitulo extends JPanel {
public PanelTitulo() {
int anchoTitulo = (int) ancho; //Ancho completo
int altoTitulo = (int) (alto / 4); //Una cuarta parte del alto
setPreferredSize(new Dimension(anchoTitulo, altoTitulo));
setBackground(Color.DARK_GRAY);
JLabel titulo = new JLabel("Esto es un título");
titulo.setFont(new Font("Verdana", Font.BOLD, (int) ancho/22));
titulo.setForeground(Color.WHITE);
add(titulo);
}
}
private class PanelTexto extends JPanel {
public PanelTexto() {
int anchoTexto = (int) ancho / 2; //Tenemos dos paneles en horizontal, cada uno ocupa la mitad del ancho
int altoTexto = (int) alto / 2; //Dos cuartas partes (la mitad) del alto
setLayout(new BoxLayout(this, BoxLayout.X_AXIS));
JPanel pnIzquierdo = new JPanel();
pnIzquierdo.setPreferredSize(new Dimension(anchoTexto, altoTexto));
pnIzquierdo.setBorder(BorderFactory.createEmptyBorder(25, 25, 25, 25));
pnIzquierdo.setBackground(Color.WHITE);
JPanel pnDerecho = new JPanel();
pnDerecho.setPreferredSize(new Dimension(anchoTexto, altoTexto));
pnDerecho.setBorder(BorderFactory.createEmptyBorder(25, 25, 25, 25));
pnDerecho.setBackground(Color.WHITE);
JTextArea txtIz = new JTextArea(TEXTO_DUMMY,JScrollPane.VERTICAL_SCROLLBAR_NEVER,
JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
txtIz.setFont(new Font("Ink Free", Font.PLAIN, (int) ancho/55));
txtIz.setForeground(Color.RED);
txtIz.setWrapStyleWord(true);
txtIz.setLineWrap(true);
txtIz.setEditable(false);
pnIzquierdo.add(txtIz);
JTextArea txtDr = new JTextArea(TEXTO_DUMMY, JScrollPane.VERTICAL_SCROLLBAR_NEVER,
JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
txtDr.setFont(new Font("Ink Free", Font.PLAIN, (int) ancho/55));
txtDr.setForeground(Color.RED);
txtDr.setWrapStyleWord(true);
txtDr.setLineWrap(true);
txtDr.setEditable(false);
pnDerecho.add(txtDr);
JScrollPane scrollIZ = new JScrollPane(pnIzquierdo);
JScrollPane scrollDer = new JScrollPane(pnDerecho);
add(scrollIZ);
add(scrollDer);
}
}
private class PanelBoton extends JPanel {
public PanelBoton() {
int anchoBoton = (int) ancho; //Ancho completo
int altoBoton = (int) (alto / 4); //Una cuarta parte del alto
setPreferredSize(new Dimension(anchoBoton, altoBoton));
JButton boton = new JButton("Soy un botón");
boton.setFont(new Font("Verdana", Font.ITALIC, (int) ancho/77));
boton.setForeground(Color.BLUE);
add(boton);
}
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new Gui_Relativa();
}
});
}
private final String TEXTO_DUMMY = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, "
+ "sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,"
+ " quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat."
+ " Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur."
+ " Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est"
+ " laborum.";
}