Мое Цель в том, что когда я нажимаю кнопку b1 («SHOW»), кнопка b2 («BUTTON 2») должна появиться в 10px справа от кнопки b1.Когда я нажимаю кнопки b1 в первый раз, он работает так, как предполагалось, но со второго раза кнопка b2 становится помещенной в (0,0) position.why?Проблема с динамическим размещением кнопок в приложении Swing
import javax.swing.JPanel;
import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.Spring;
import javax.swing.SpringLayout;
import java.awt.event.*;
import javax.swing.*;
class DynamicSpring implements ActionListener
{
JPanel jp;
JFrame jf;
JButton b1,b2;
SpringLayout sl;
DynamicSpring()
{
jf=new JFrame("DynamicSpring");
jf.setSize(500,500);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
sl=new SpringLayout();
jp=new JPanel(sl);
b1=new JButton("SHOW");
b1.setSize(100,100);
sl.putConstraint(SpringLayout.WEST,b1,10,SpringLayout.WEST,jp);
sl.putConstraint(SpringLayout.NORTH,b1,10,SpringLayout.NORTH,jp);
b1.addActionListener(this);
jp.add(b1);
b2=new JButton("Button 2");
b2.setSize(100,100);
jf.setContentPane(jp);
jf.setVisible(true);
}
public void actionPerformed(ActionEvent ae)
{
sl.putConstraint(SpringLayout.WEST,b2,10,SpringLayout.EAST,b1);
jp.add(b2);
jp.repaint();
jp.validate();
}
public static void main(String... s)
{
new DynamicSpring();
}
}
Удалить второй вопрос. это все равно. –
Позвоните 'revalidate', а затем' repaint' – MadProgrammer
все еще получаете тот же результат –