首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >当您在JLabel中有背景时,如何将Jbuttons设置为特定位置:下面的代码

当您在JLabel中有背景时,如何将Jbuttons设置为特定位置:下面的代码
EN

Stack Overflow用户
提问于 2014-03-26 17:35:35
回答 2查看 385关注 0票数 0

当您在JLabel中有背景时,如何将bottom设置到特定的位置:下面的代码无法使jlabel停留在顶部,而按钮位于南部(底部)?

代码语言:javascript
代码运行次数:0
运行
复制
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class ButtonsClass extends JFrame
              implements ActionListener {
    JButton b1 = new JButton("button1");
    JButton b2 = new JButton("button2");
    JButton b3 = new JButton("button3");
    JButton b4 = new JButton("button4");
    JLabel label = new JLabel("buttons:");

public static void main(String[] args) {
    new ButtonsClass();
}

public Jukebox() {
    setLayout(new BorderLayout());
    setContentPane(new JLabel(new ImageIcon("image.png")));
    setLayout(new FlowLayout());
    setSize(500,150);
    setTitle("Backgroundwithbuttons");
    setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);


   JPanel top = new JPanel();

    top.add(label);
    add("North", top);
    JPanel bottom = new JPanel();
    bottom.add(b1); 
    bottom.add(b2); 
    bottom.add(b3); 
    bottom.add(b4); 
    add("South", bottom); 
    setVisible(true);
}

}

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-03-26 17:46:09

“我不能让jlabel停留在顶部,让按钮保持在南部(底部)”

  • 这是因为您将布局设置为BorderLayout,然后立即将其设置为FlowLayout。有了FlowLayout,您的BorderLayout定位就什么也做不了。 setLayout(新BorderLayout());setContentPane(新ImageIcon(“image.png”));setLayout(新FlowLayout());

只要摆脱setLayout(new FlowLayout());

  • 此外,构造函数也是错误的。 公用点唱机(){ -Should be- public ButtonClass() {
  • 此外,还需要设置设置为内容窗格的JLabel的布局。Yout构造函数应该如下所示 setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);ButtonClass() { JLabel背景=新的JLabel(新的ImageIcon("image.png"));background.setLayout(新的BorderLayout());setContentPane(背景);setTitle(“带有按钮的背景”);setTitle(“带有按钮的背景”);setTitle JPanel top =新的JPanel();top.add(标签);add(顶上的BorderLayout.NORTH);JPanel底部=新的JPanel();bottom.add(JPanel);JPanel();bottom.add(b3);bottom.add(b4);添加(底部,BorderLayout.SOUTH);//pack();setVisible(真);}
  • 另外,add("North", top);是一种不推荐的方法。相反,可以使用add(top, BorderLayout.NORTH),而对add(bottom, BorderLayout.SOUTH)使用相同的
  • 另外,Swing应用程序应该在事件调度线程上运行。您可以通过在main中使用SwingUtilities.invokeLater...包装代码来做到这一点。 公共静态void (String[] args) { SwingUtilities.invokeLater(new ()){ public void (){新ButtonClass();};}
  • 此外,如果希望图像显示在面板后面,则应将面板的不透明属性设置为false。 Top.setOpaque(假);bottom.setOpaque(假);

代码语言:javascript
代码运行次数:0
运行
复制
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class ButtonClass extends JFrame
        implements ActionListener {

    JButton b1 = new JButton("button1");
    JButton b2 = new JButton("button2");
    JButton b3 = new JButton("button3");
    JButton b4 = new JButton("button4");
    JLabel label = new JLabel("buttons:");

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                new ButtonClass();
            }
        });
    }

    public ButtonClass() {
        label.setForeground(Color.WHITE);
        JLabel background = new JLabel(new ImageIcon(getClass().getResource("/resources/space.png")));
        background.setLayout(new BorderLayout());
        setContentPane(background);
        setTitle("Background with buttons");
        setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);

        JPanel top = new JPanel();
        top.setOpaque(false);
        top.add(label);
        add(top, BorderLayout.NORTH);
        JPanel bottom = new JPanel();
        bottom.setOpaque(false);
        bottom.add(b1);
        bottom.add(b2);
        bottom.add(b3);
        bottom.add(b4);
        add(bottom, BorderLayout.SOUTH);
        setSize(400, 300);
        setVisible(true);
    }

    @Override
    public void actionPerformed(ActionEvent e) {}
}
票数 1
EN

Stack Overflow用户

发布于 2014-03-26 17:45:55

试着使用:

添加(底部,BorderLayout.SOUTH);

而不是:

添加(“南方”,底部);

BorderLayout教程

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22668846

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档