当前位置: 首页 > 知识库问答 >
问题:

将JPanel定位在JFrame中的特定位置

阎宾实
2023-03-14

我需要一个帮助来定位一个JPanel在一个特定的位置到一个Jframe。

我在一个扩展JFrame的类中有一个JPanel,我需要将这个JPanel放在一个特定的x,y位置。

是这样的:

public class Frame extends JFrame {

    public Frame(){

        this.setDefaultCloseOperation(EXIT_ON_CLOSE);
        this.setLocation(250, 250);
        this.setSize(300,300);
        this.setVisible(true);

        JPanel panel = new JPanel();
        this.add(panel);
        panel.setLocation(150, 150);
        panel.add(new JButton("Hello!")); // just to show JPanel

    }//Frame()
}//Frame

我不需要一个LayoutManager的位置的JPanel,因为我需要把JPanel在一个特定的位置(像150,150的例子)。但是如果我panel.set位置(150,150),就像上面的代码一样,什么都不会发生,并且JPanel仍然位于框架的北中心(如果我改变x, y数字而不是150,150)。

它显示如下:

http://i.imgur.com/Te3z0kv.png

共有3个答案

璩珂
2023-03-14

JFrame对象默认使用borderlayout管理器,JPanel默认使用framelayout管理器。如果要使用绝对定位,则必须使用null布局,因为任何其他布局管理器都将根据其自身的情绪而不是您想要的方式使用setLocation()和setSize()方法。

小结:使用setLayout(null)和null管理器,然后使用setBounds(X,Y,width,height)方法。

王声
2023-03-14

使用setBound(新矩形(96, 67, 98, 41));您可以这样做...

/**
 * This method initializes this
 *
 * @return void
 */
private void initialize() {
    this.setSize(300, 200);
    this.setContentPane(getJContentPane());
    this.setTitle("JFrame");
}

/**
 * This method initializes jContentPane
 *
 * @return javax.swing.JPanel
 */
private JPanel getJContentPane() {
    if (jContentPane == null) {
        jContentPane = new JPanel();
        jContentPane.setLayout(null);
        jContentPane.add(getLoginButton(), null);
    }
    return jContentPane;
}

}

齐胜涝
2023-03-14

默认情况下,框架的内容面板的布局管理器是BorderLayout(NWSE C)。做:

this.getContentPanel().setLayout(null);
 类似资料:
  • 我想将包含send按钮和textfield(现在使用flowlayout)的JPanel放置在JTextArea(白色区域)的底部。我怎样才能做到这一点?

  • 我在 netbeans 的 GUI 设计器中设计了一个 GV 框架,它有 1 个文本区域、2 个文本框和 1 个 jButtons,它们位于框架的右侧。现在我想在这些组件左侧的 GV 框架中添加一个自定义 JPanel。像这样: http://s25.postimg.org/3lggsdusf/Othe.png 主网格面板(直接构建在班级内部 可以看出,我试图通过 GUI 编辑器通过自动生成的 i

  • 但是,我的程序稍后尝试将一个新的JPanel添加到类的扩展JPanel中,方法是: 这个新的JPanel以正确的BorderLayout格式显示内容,但是JPanel本身将保持在扩展JPanel的顶部中心,我知道这是因为默认布局设置为FlowLayout,但是将其设置为BorderLayout只会导致面板占用整个屏幕。将布局设置为null将完全破坏框架,除了框架的最小化和关闭按钮之外,什么也没有出

  • 我有一个JFrame,里面装满了JPanel(下面的代码)。 我正在使用JPanel在里面画东西,例如,我可以在任何我喜欢的地方画线,但是当添加JLabel到它的时候,我不能把它移动到它卡住的任何地方 但问题是他们建议的解决方案对我不起作用。 很抱歉,如果我不清楚,我试图在创建Surface之前和之后在函数initUI()中添加上面的内容。 但是在那之后,框架显示几乎(1,1)大小和它的空(如果我

  • 问题内容: 我需要绘制一个水平直方图,并且按如下所示设置直方图的标签, 有人能找出这里有什么问题吗? 为什么不显示其他标签? 问题答案: 这个问题的答案的问题是,你不应该使用(这在JFrame默认情况下使用),而是使用GridLayout。这样 您就可以将添加到。一个示例如下所示:

  • 因此,我创建了2个 但后来我意识到2不是一个好主意,所以我添加了,然后尝试以的形式添加不同的选项卡。但是我不能像在中那样定位组件,它看起来是这样的。 但我希望它是这样的 我怎么能这么做?