在netbeans中对此进行编码,因此我没有编写用于创建其余GUI的所有代码。
btn_Next是面板上已有的按钮
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();
}
答案 0 :(得分:3)
pnl_Buttons使用什么布局管理器?如果您不知道,可以轻松地将Java打印出来:
System.out.println(pnl_Buttons.getLayout());
请注意,某些布局管理器允许更好地添加组件,对于您的问题,布局是关键。
这里猜测,但看起来你的pnl_Buttons使用空布局,如果是这样,你的JButton可能没有显示,因为它的大小是0 x 0,因为你从未设置它的大小;这是因为null布局要求添加的组件完全指定自己的大小和位置。您可以指定按钮的位置和首选大小,但不指定大小。如果是这样,快速解决方案是通过setSize(...)
设置JButton的大小,但更多更好的是不使用空布局,而是使用一个更友好的布局管理器。
顺便说一句,你不应该在被添加的组件上调用revalidate()
和repaint()
,除非你调用了{{{}},否则不需要在JBUtton上调用setVisible(true)
。之前有1}}。相反,您只需要在要添加组件的容器上调用setVisible(false)
和revalidate()
,此处为pnl_Buttons对象。