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
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
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!
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
Vous devez vous connecter pour publier un commentaire.
Voir La pose des Composants Dans un Conteneur.
OK, j'ai piraté le sortir un peu de code dans la forme de l'original de votre interface graphique qui utilise des mises en page et les redimensionner. Depuis je n'ai pas été clair sur l'endroit où la hauteur supplémentaire devrait être attribué, je l'ai donné à la zone de texte. Les couleurs, police de caractères, taille, etc. sont laissés en exercice pour l'utilisateur.
Captures d'écran
Petit
Large
De hauteur
SSCCE
FullScreenTest
repose laJPanel
par défaut,FlowLayout
.Voir aussi la mise à jour.
Exemplaire; dans le cas où le titre de l'étiquette est destinée à l'échelle, @mKorbel a recueilli des exemples liés à ici.
C'est une belle collection d'exemples de mise à l'échelle le texte pour l'adapter.
Merci À Andrew. Le problème, c'est le nul de la Mise en page. Il n'y a pas de façon de tirer les composants sans suivre le LayoutManager ? il faudra beaucoup de temps, ce pourquoi j'ai utilisé l'Absolu Layoute (null).
OriginalL'auteur Andrew Thompson
Si quelqu'un d'autre a le même problème, la solution est d'utiliser des Mises en page au lieu d'utiliser la valeur null est à disposition.
OriginalL'auteur Abs