把JButton放在JPanel里面的JLabel顶部

时间:2014-11-15 01:49:14

标签: java swing user-interface jpanel jlabel

我的JPanel包含:

JButton和 JLabel里面有图片

我想将按钮放在JLabel顶部的NORTH CENTER位置。目前它的设置彼此相邻,我不知道如何覆盖JLabel。

我在这里尝试了很多解决方案,但它似乎并没有按照我想要的方式工作。谢谢!

JLabel picLabel = new JLabel(); // background of the label
picLabel.setIcon(new ImageIcon(CoursesGUI.class.getResource("/images/graph_paper.jpg")));
Button en_course_btn = new JButton("English Course");
coursePanel.add(en_course_btn);
coursePanel.add(picLabel);

更新:按钮位于JLabel的顶部,但不在内部。

1 个答案:

答案 0 :(得分:3)

您应该为标签设置布局并在其中添加按钮:

JPanel setupPanel = new JPanel();
JPanel titlePanel = new JPanel();
JPanel contentPanel = new JPanel();
JPanel coursePanel = new JPanel();

JLabel picLabel = new JLabel(); // background of the label
picLabel.setLayout(new FlowLayout(FlowLayout.CENTER));

picLabel.setIcon(new ImageIcon(CoursesGUI.class.getResource("/images/graph_paper.jpg")));

// picLabel.setLayout(new BorderLayout()); // sets layout inside the label
JButton en_course_btn = new JButton("English Course");

contentPanel.setBackground(Color.GREEN);
titlePanel.setBackground(Color.YELLOW);

// picLabel.setPreferredSize(new Dimension(500, 470)); // dimensions of inner containers
contentPanel.setPreferredSize(new Dimension(1280, 670));
titlePanel.setPreferredSize(new Dimension(1280, 50));

picLabel.add(en_course_btn);
//coursePanel.add(en_course_btn);
coursePanel.add(picLabel);

contentPanel.add(coursePanel); // add coursePanel containing buttons and background
setupPanel.add(titlePanel, BorderLayout.NORTH);
setupPanel.add(contentPanel);
getContentPane().add(setupPanel);