Redimensionner les composants de l'image en mode plein écran

Je veux que mon image de composants à être toujours ajusté à l'écran, quelle que soit la taille de l'écran. J'ai dessiner le cadre de mon ordinateur Portable (petit écran) et quand je lance mon application dans une autre machine (fichier jar) avec un grand écran les éléments du cadre n'est pas re-taille!

Comment je peux faire mon image redimensionner les composants lorsque j'ai mis l'image en mode plein écran dans n'importe quelle machine?

De mise en page actuelle

Redimensionner les composants de l'image en mode plein écran

Code

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);
}
}
Nous avons besoin de savoir bien en savoir plus au sujet de votre contenu de l'application et des besoins à l'échelle. Merci d'éditer votre question à inclure un sscce qui illustre votre objectif principal.
J'avais édité mon texte ajouté dans le code source. Besoin que les composants de l'image sera redimensionnée lorsque je optimiser l'image. Le problème est que je peux optimiser l'image, mais ses composants encore petite.
Vous avez besoin d'utiliser LayoutManager à la position de vos composants sur la JFrame/JPanel, comme conseillé par Andrew dans sa réponse. N'utilisez pas la valeur null Mise en page, qui est la véritable cause de cette chose, ce que vous êtes en face 🙂
BTW - la Plupart des gens se sentent une S-SCCE doit être inférieure à 241 lignes de code. Obtenir le redimensionnement avec seulement deux composants de l'interface utilisateur, passez à plus de code!
Oups! J'ai parlé trop vite, que 241 lignes de code dump n'est même pas compilable. Veuillez suivre le lien dans le 1er commentaire, lire, & post un SSCCE!

OriginalL'auteur Abs | 2012-03-22