Java 调用实例化方法后,JButton不会出现在面板上
用netbeans编写了这段代码,因此我没有自己编写创建其余GUI的所有代码 btn_下一步是已经在面板上的按钮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");
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我建议您考虑使用一个布局,在运行时更容易接受新的组件。有关更多详细信息,请查看。