java – 在JFrame中居中图像?

前端之家收集整理的这篇文章主要介绍了java – 在JFrame中居中图像?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我正在为我的程序创建一个关于JFrame的东西.我有一个用于该程序的图标,我将其显示为关于JFrame的第一件事,但我在尝试使图像居中时遇到问题.如果我进行某种对中操作,它会搞砸其他一切的整体对齐.

我试图将除图标之外的所有JLabel保持对齐.然后将图标与中心对齐.

我不得不删除一些个人信息,无论我删除了什么,我把它们放在“[]”之间.

  1. import java.awt.Dimension;
  2. import java.awt.Font;
  3. import javax.swing.BorderFactory;
  4. import javax.swing.Box;
  5. import javax.swing.BoxLayout;
  6. import javax.swing.ImageIcon;
  7. import javax.swing.JFrame;
  8. import javax.swing.JLabel;
  9. import javax.swing.JPanel;
  10. public class About extends JFrame {
  11. public About() {
  12. super("About [PROGRAM]");
  13. setIconImage([PROGRAM].getInstance().setIcon());
  14. JPanel main = new JPanel();
  15. main.setLayout(new BoxLayout(main,BoxLayout.Y_AXIS));
  16. main.setBorder(BorderFactory.createEmptyBorder(10,10,10));
  17. JLabel icon = new JLabel("",new ImageIcon(getClass().getResource(Constants.ICON_FULL)),JLabel.CENTER);
  18. JLabel name = new JLabel("[PROGRAM]");
  19. JLabel expandedName = new JLabel("[PROGRAM DESCRIPTION]");
  20. JLabel copyright = new JLabel("[COPYRIGHT JUNK]");
  21. JLabel credits = new JLabel("[CREDITS]");
  22. name.setFont(new Font(name.getFont().getFamily(),Font.BOLD,18));
  23. copyright.setBorder(BorderFactory.createEmptyBorder(0,0));
  24. main.add(icon);
  25. main.add(Box.createRigidArea(new Dimension(0,10)));
  26. main.add(name);
  27. main.add(expandedName);
  28. main.add(copyright);
  29. main.add(credits);
  30. add(main);
  31. pack();
  32. setLocationRelativeTo(null);
  33. setVisible(true);
  34. }
  35. }
最佳答案
考虑使用一些布局来帮助你.想到的那些包括BorderLayout和BorderLayout.CENTER位置的图标.您可以使用BoxLayout在一侧堆叠东西,使用JPanel,使用JPanel添加到主BorderLayout.

例如.,

  1. import java.awt.BorderLayout;
  2. import java.awt.Font;
  3. import java.awt.event.ActionEvent;
  4. import java.awt.image.BufferedImage;
  5. import java.io.IOException;
  6. import java.net.MalformedURLException;
  7. import java.net.URL;
  8. import javax.imageio.ImageIO;
  9. import javax.swing.*;
  10. @SuppressWarnings("serial")
  11. public class About extends JDialog {
  12. public static final String IMAGE_PATH = "http://upload.wikimedia.org/wikipedia/"
  13. + "commons/thumb/3/39/European_Common_Frog_Rana_temporaria.jpg/"
  14. + "800px-European_Common_Frog_Rana_temporaria.jpg";
  15. public About(JFrame frame) {
  16. super(frame,"About [PROGRAM]",true);
  17. ImageIcon myIcon = null;
  18. try {
  19. URL imgUrl = new URL(IMAGE_PATH);
  20. BufferedImage img = ImageIO.read(imgUrl);
  21. myIcon = new ImageIcon(img);
  22. } catch (MalformedURLException e) {
  23. e.printStackTrace();
  24. System.exit(-1);
  25. } catch (IOException e) {
  26. e.printStackTrace();
  27. System.exit(-1);
  28. }
  29. JPanel main = new JPanel(new BorderLayout());
  30. main.setBorder(BorderFactory.createEmptyBorder(10,10));
  31. JLabel centerLabel = new JLabel(myIcon);
  32. JLabel name = new JLabel("[PROGRAM]");
  33. JLabel expandedName = new JLabel("[PROGRAM DESCRIPTION]");
  34. JLabel copyright = new JLabel("[COPYRIGHT JUNK]");
  35. JLabel credits = new JLabel("[CREDITS]");
  36. name.setFont(new Font(name.getFont().getFamily(),18));
  37. copyright.setBorder(BorderFactory.createEmptyBorder(0,0));
  38. int eb = 20;
  39. centerLabel.setBorder(BorderFactory.createEmptyBorder(eb,eb,eb));
  40. JPanel leftPanel = new JPanel();
  41. leftPanel.setLayout(new BoxLayout(leftPanel,BoxLayout.PAGE_AXIS));
  42. leftPanel.add(name);
  43. leftPanel.add(Box.createVerticalGlue());
  44. leftPanel.add(expandedName);
  45. leftPanel.add(copyright);
  46. leftPanel.add(credits);
  47. leftPanel.add(Box.createVerticalGlue());
  48. main.add(centerLabel,BorderLayout.CENTER);
  49. main.add(leftPanel,BorderLayout.LINE_START);
  50. add(main);
  51. pack();
  52. }
  53. public static void main(String[] args) {
  54. final JFrame frame = new JFrame("GUI");
  55. JPanel panel = new JPanel();
  56. panel.add(new JButton(new AbstractAction("About") {
  57. @Override
  58. public void actionPerformed(ActionEvent e) {
  59. About about = new About(frame);
  60. about.setLocationRelativeTo(frame);
  61. about.setVisible(true);
  62. }
  63. }));
  64. frame.add(panel);
  65. frame.pack();
  66. frame.setLocationRelativeTo(null);
  67. frame.setDefaultCloSEOperation(JFrame.EXIT_ON_CLOSE);
  68. frame.setVisible(true);
  69. }
  70. }

猜你在找的Java相关文章