Quiero que mi marco de los componentes a ser siempre ajustada en la pantalla, independientemente del tamaño de la pantalla. Me dibujar el marco en mi Portátil (pantalla pequeña) y cuando ejecuto mi aplicación en otra máquina (archivo jar) con una gran pantalla de los componentes de la montura no re-tamaño!

Cómo puedo hacer que mi marco de cambiar el tamaño de los componentes es que cuando pongo el fotograma en el modo de pantalla completa en cualquier máquina?

Diseño actual

Cambiar el tamaño de los componentes de la trama en modo de pantalla completa

Código

package package_MSM;
import java.awt.Color;
public class MSMGui extends JFrame 
{
private static final long serialVersionUID = 1L;
private JPanel contentPane;
private JTextArea textArea;
private JPanel pnlLogo1;
private JLabel lblLogo1;;
private static JButton btnSmpd1;
private static JButton btnSmpd2;
private static JButton btnSmpd3;
private static JButton btnSmpd4;
private static JButton btnSmpd5;
private static JButton btnSmpd6;
private static JButton btnSmpd7;
/**
* Launch the application.
*/
public static void main(String[] args) 
{
EventQueue.invokeLater(new Runnable() 
{
public void run() 
{
try 
{
MSMGui frame = new MSMGui();
frame.setExtendedState(Frame.MAXIMIZED_BOTH);
frame.setVisible(true);
} 
catch (Exception e) 
{
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public MSMGui() 
{
setResizable(true);
setTitle("MSM");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 841, 334);
contentPane = new JPanel();
contentPane.setBackground(Color.BLACK);
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
JPanel panelSmpd = new JPanel();
panelSmpd.setBounds(10, 69, 804, 105);
panelSmpd.setBackground(Color.BLACK);
contentPane.add(panelSmpd);
panelSmpd.setLayout(null);
JMenuBar menuBar = new JMenuBar();
menuBar.setBackground(UIManager.getColor("MenuBar.background"));
menuBar.setFont(new Font("Segoe UI", Font.PLAIN, 12));
setJMenuBar(menuBar);
JMenu mnMenu = new JMenu("Menu");
menuBar.add(mnMenu);
JMenuItem mntmAlarmStop = new JMenuItem("Stop alarm sound");
mntmAlarmStop.addActionListener(new ActionListener() 
{
public void actionPerformed(ActionEvent e) 
{
stopAlarm();
textArea.append(dateTime()+ " Alarm cleared by the Operator from the Menu Bar\n");
writeTofile(dateTime()+ " Alarm cleared by the Operator from the Menu Bar\n");
}
});
mnMenu.add(mntmAlarmStop);
JMenuItem mntmExit = new JMenuItem("Exit");
mntmExit.addActionListener(new ActionListener() 
{
public void actionPerformed(ActionEvent e) 
{
//display the showOptionDialog
Object[] options = { "OK", "Cancel" };
int choice = JOptionPane.showOptionDialog(null, 
"You really want to quit?", 
"Quit?", 
JOptionPane.YES_NO_OPTION, 
JOptionPane.QUESTION_MESSAGE, 
null, 
options, 
options[0]);
//interpret the user's choice
if (choice == JOptionPane.YES_OPTION)
{
System.exit(0);
}
}
});
mnMenu.add(mntmExit);       
btnSmpd1 = new JButton("SPD 1");
btnSmpd1.addActionListener(new ActionListener() 
{
public void actionPerformed(ActionEvent arg0) 
{               
btnSmpd1.setBackground(Color.YELLOW);
stopAlarm();
btnSmpd1.setEnabled(false);
textArea.append(dateTime() + " Alarm Stampede 1 cleared by the Operator\n");
writeTofile(dateTime()  + " Alarm Stampede 1 cleared by the Operator\n");
}
});
btnSmpd1.setFont(new Font("Tahoma", Font.BOLD, 15));
btnSmpd1.setBounds(23, 13, 100, 74);
panelSmpd.add(btnSmpd1);
btnSmpd1.setOpaque(true);
btnSmpd2 = new JButton("SPD 2");
btnSmpd2.addActionListener(new ActionListener() 
{
public void actionPerformed(ActionEvent arg0) 
{               
btnSmpd2.setBackground(Color.YELLOW);
stopAlarm();
btnSmpd2.setEnabled(false);
textArea.append(dateTime() + " Alarm Stampede 2 cleared by the Operator\n");
writeTofile(dateTime()  + " Alarm Stampede 2 cleared by the Operator\n");
}
});
btnSmpd2.setFont(new Font("Tahoma", Font.BOLD, 15));
btnSmpd2.setBounds(133, 13, 100, 74);
panelSmpd.add(btnSmpd2);
btnSmpd2.setOpaque(true);
btnSmpd3 = new JButton("SPD 3");
btnSmpd3.addActionListener(new ActionListener() 
{
public void actionPerformed(ActionEvent arg0) 
{
btnSmpd3.setBackground(Color.YELLOW);
stopAlarm();
btnSmpd3.setEnabled(false);
textArea.append(dateTime() + " Alarm Stampede 3 cleared by the Operator\n");
writeTofile(dateTime()  + " Alarm Stampede 3 cleared by the Operator\n");
}
});
btnSmpd3.setFont(new Font("Tahoma", Font.BOLD, 15));
btnSmpd3.setBounds(243, 13, 100, 74);
panelSmpd.add(btnSmpd3);
btnSmpd3.setOpaque(true);
btnSmpd4 = new JButton("SPD 4");
btnSmpd4.addActionListener(new ActionListener() 
{
public void actionPerformed(ActionEvent arg0) 
{
btnSmpd4.setBackground(Color.YELLOW);
stopAlarm();
btnSmpd4.setEnabled(false);
textArea.append(dateTime() + " Alarm Stampede 4 cleared by the Operator\n");
writeTofile(dateTime()  + " Alarm Stampede 4 cleared by the Operator\n");
}
});
btnSmpd4.setFont(new Font("Tahoma", Font.BOLD, 15));
btnSmpd4.setBounds(353, 13, 100, 74);
panelSmpd.add(btnSmpd4);
btnSmpd4.setOpaque(true);
btnSmpd5 = new JButton("SPD 5");
btnSmpd5.addActionListener(new ActionListener() 
{
public void actionPerformed(ActionEvent arg0) 
{               
btnSmpd5.setBackground(Color.YELLOW);
stopAlarm();
btnSmpd5.setEnabled(false);
textArea.append(dateTime() + " Alarm Stampede 5 cleared by the Operator\n");
writeTofile(dateTime()  + " Alarm Stampede 5 cleared by the Operator\n");
}
});
btnSmpd5.setFont(new Font("Tahoma", Font.BOLD, 15));
btnSmpd5.setBounds(463, 11, 100, 76);
panelSmpd.add(btnSmpd5);
btnSmpd5.setOpaque(true);
btnSmpd6 = new JButton("SPD 6");
btnSmpd6.addActionListener(new ActionListener() 
{
public void actionPerformed(ActionEvent arg0) 
{               
btnSmpd6.setBackground(Color.YELLOW);
stopAlarm();
btnSmpd6.setEnabled(false);
textArea.append(dateTime() + " Alarm Stampede 6 cleared by the Operator\n");
writeTofile(dateTime()  + " Alarm Stampede 6 cleared by the Operator\n");
}
});
btnSmpd6.setFont(new Font("Tahoma", Font.BOLD, 15));
btnSmpd6.setBounds(573, 11, 100, 76);
panelSmpd.add(btnSmpd6);
btnSmpd6.setOpaque(true);
btnSmpd7 = new JButton("SPD 7");
btnSmpd7.addActionListener(new ActionListener() 
{
public void actionPerformed(ActionEvent arg0) 
{               
btnSmpd7.setBackground(Color.YELLOW);
stopAlarm();
btnSmpd7.setEnabled(false);
textArea.append(dateTime() + " Alarm Stampede 7 cleared by the Operator\n");
writeTofile(dateTime()  + " Alarm Stampede 7 cleared by the Operator\n");
}
});
btnSmpd7.setFont(new Font("Tahoma", Font.BOLD, 15));
btnSmpd7.setBounds(683, 11, 100, 76);
panelSmpd.add(btnSmpd7);
btnSmpd7.setOpaque(true);
JLabel lblTitle = new JLabel("MNOC Stampede Monitor");
lblTitle.setBounds(200, 11, 423, 27);
lblTitle.setHorizontalTextPosition(SwingConstants.CENTER);
lblTitle.setForeground(Color.GRAY);
lblTitle.setHorizontalAlignment(SwingConstants.CENTER);
lblTitle.setFont(new Font("Tahoma", Font.BOLD, 32));
contentPane.add(lblTitle);
scrollPane = new JScrollPane();
scrollPane.setBounds(40, 172, 754, 91);
contentPane.add(scrollPane);
textArea = new JTextArea();
scrollPane.setViewportView(textArea);
ImageIcon image = new ImageIcon("logo.jpg");
pnlLogo1 = new JPanel();
pnlLogo1.setBounds(50, 11, 70, 47);
contentPane.add(pnlLogo1);
pnlLogo1.setLayout(null);
lblLogo1 = new JLabel();
lblLogo1.setBounds(0, 0, 70, 47);
pnlLogo1.add(lblLogo1);
lblLogo1.setOpaque(true);
lblLogo1.setVisible(true);
lblLogo1.setIcon(image);
pnlLogo1.setVisible(true);
}
}
Necesitamos saber por tanto más información sobre la aplicación de su contenido y lo que parte de las necesidades a escala. Por favor, edita tu pregunta para incluir un sscce que ilustra su principal objetivo.
Yo había editado mi texto añadido en el código fuente. Necesidad de que los componentes en el marco de cambiar de tamaño cuando me maximizar el marco. El problema es que puede maximizar el fotograma, pero sus componentes todavía pequeño.
Usted necesidad de utilizar LayoutManager a la posición de los componentes en la JFrame/JPanel, como aconsejó a Andrew en su respuesta. No utilizar null Diseño, que es la verdadera causa de esta cosa, lo que se enfrentan 🙂
Por CIERTO, la Mayoría de las personas sienten un S-SCCE debe ser de menos de 241 líneas de código. Conseguir cambiar el tamaño con sólo dos componentes en la interfaz gráfica de usuario, , proceda a más de código!
Woops! Hablé demasiado pronto, antes de que 241 líneas de código de volcado no es ni siquiera compilable. Por favor, siga el enlace en el 1er comentario, lee, & publicar un SSCCE!

OriginalEl autor Abs | 2012-03-22

2 Comentarios

  1. 9

    Ver La colocación de los Componentes Dentro de un Contenedor.


    OK, yo desmonto algo de código en la forma original de su interfaz gráfica de usuario que utiliza diseños y cambiar de tamaño. Ya que no me queda claro en donde la altura extra que debe ser asignado, me la dieron para el área de texto. Colores, tamaño de fuente, etc. se deja como ejercicio para el usuario.

    Capturas de pantalla

    Pequeño

    Cambiar el tamaño de los componentes de la trama en modo de pantalla completa

    Amplia

    Cambiar el tamaño de los componentes de la trama en modo de pantalla completa

    De altura

    Cambiar el tamaño de los componentes de la trama en modo de pantalla completa

    SSCCE

    package test;
    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.Dimension;
    import java.awt.GridLayout;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTextArea;
    import javax.swing.SwingUtilities;
    import javax.swing.border.EmptyBorder;
    public class StampedeMonitor {
    public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable() {
    public void run() {
    JFrame f = new JFrame("MSM");
    f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    JPanel gui = new JPanel(new BorderLayout(5,5));
    gui.setBorder(new EmptyBorder(10,10,10,10));
    JPanel logos = new JPanel(new BorderLayout(5,5));
    gui.add(logos, BorderLayout.NORTH);
    JPanel icon = new JPanel();
    //this should be set by the image
    icon.setPreferredSize(new Dimension(50,50));
    icon.setBackground(Color.RED);
    icon.setOpaque(true);
    logos.add(icon, BorderLayout.WEST);
    logos.add(new JLabel("MNOC Stampede Monitor", JLabel.CENTER));
    JPanel controls = new JPanel(new BorderLayout(5,5));
    gui.add(controls, BorderLayout.CENTER);
    JPanel buttons = new JPanel(new GridLayout(1,0,5,5));
    controls.add(buttons, BorderLayout.NORTH);
    for (int ii=1; ii<8; ii++) {
    JButton button = new JButton("SPD " + ii);
    Dimension d = button.getPreferredSize();
    //make the buttons twice as tall as default
    Dimension big = new Dimension(
    (int)d.getWidth(),
    (int)d.getHeight()*2);
    button.setPreferredSize(big);
    buttons.add(button);
    }
    controls.add(new JScrollPane( new JTextArea(5,10) ));
    f.setContentPane(gui);
    f.pack();
    f.setVisible(true);
    }
    });
    }
    }
    Esto es esencial; por ejemplo, FullScreenTest se basa la JPanel defecto, FlowLayout.
    Véase también la actualización.
    Ejemplar; en caso de que el título de la etiqueta está destinado a escala, @mKorbel ha recogido ejemplos relacionados aquí.
    Que es una buena colección de ejemplos de ajustar el texto para que se ajuste.
    Gracias Andrés. El problema es la nula Disposición. No hay manera de dibujar los componentes sin seguir el LayoutManager ? toma mucho tiempo, por eso he utilizado la Absoluta Layoute (null).

    OriginalEl autor Andrew Thompson

  2. 2

    Si alguien más tiene el mismo problema, la solución es el uso de Diseños en lugar de utilizar la nula disposición.

    OriginalEl autor Abs

Dejar respuesta

Please enter your comment!
Please enter your name here