Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 调用实例化方法后,JButton不会出现在面板上_Java_Swing_Layout_Jbutton_Jcomponent - Fatal编程技术网

Java 调用实例化方法后,JButton不会出现在面板上

Java 调用实例化方法后,JButton不会出现在面板上,java,swing,layout,jbutton,jcomponent,Java,Swing,Layout,Jbutton,Jcomponent,用netbeans编写了这段代码,因此我没有自己编写创建其余GUI的所有代码 btn_下一步是已经在面板上的按钮 private void place_Button() { btn_Next.setLocation((btn_Next.getX()+30), btn_Next.getY()); btn_Next.revalidate(); btn_Next.repaint(); JButton btn_Back = new JButton("Back");

用netbeans编写了这段代码,因此我没有自己编写创建其余GUI的所有代码

btn_下一步是已经在面板上的按钮

private void place_Button() {

    btn_Next.setLocation((btn_Next.getX()+30), btn_Next.getY());
    btn_Next.revalidate();
    btn_Next.repaint();

    JButton btn_Back = new JButton("Back");
    pnl_Buttons.add(btn_Back);

    btn_Back.setPreferredSize(btn_Next.getPreferredSize());
    btn_Back.setLocation((btn_Next.getX()- 100), btn_Next.getY());
    btn_Back.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {

            switch_Works_Back();
        }
    });

    btn_Back.setVisible(true);
    pnl_Buttons.revalidate();
    pnl_Buttons.repaint();

}

pnl_按钮使用什么布局管理器?如果您不知道,可以让Java轻松打印出来:

System.out.println(pnl_Buttons.getLayout());
请注意,某些布局管理器比其他布局管理器更适合添加组件,对于您的问题,布局是关键

这里有一个猜测,但看起来您的pnl_按钮使用了空布局,如果是这样,您的JButton可能不会显示,因为它的大小是0 x 0,因为您从未设置过它的大小;这是因为空布局要求添加的组件完全指定其自身的大小和位置。可以指定按钮的位置和首选大小,但不能指定其大小。如果是这样,一个快速的解决方案是通过setSize…设置JButton的大小,但更好的方法是不使用空布局,而是使用一个更为用户友好的布局管理器


另一方面,您不应该对正在添加的组件调用revalidate和repaint,也不需要在JBUtton上调用setVisibletrue,除非您以前对其调用过setVisiblefalse。相反,您只需在要添加组件的容器上调用重新验证和重新绘制,这里是您的pnl_按钮对象。

pnl_按钮使用什么布局管理器?如果您不知道,可以很容易地让Java打印出来:System.out.printlnpnl_Buttons.getLayout;请注意,某些布局管理器比其他布局管理器更适合添加组件,对于您的问题,布局是关键。@retroSpect:不客气,但请再次告诉我们您使用的布局。我现有的按钮不会移动though@retroSpect:任何时候你想回答我的问题并提供更多细节,我们将非常乐意为您提供有效的帮助。版面设计是免费的。这是中的默认设置Netbeans@retroSpect我建议您考虑使用一个布局,在运行时更容易接受新的组件。有关更多详细信息,请查看。