В моей JFrame, у меня есть в каждой строке два label
и один JComboBox
ordred следующим образом:Изменение положения JBouton динамически
Label JComboBox Label
**Bouton**
Пользователь может добавить новую строку с теми же лицами. Итак, я добавляю бутон, и когда пользователь отправляет новую строку, создается.
Label JComboBox Label
**Bouton**
Label JComboBox Label
Однако положение бутона сохраняется в том же положении. Как изменить положение бутона (в конце страницы), даже если создается новая строка?
Мой код ниже:
public class Display extends JFrame{
public Display(){
super("Test");
setTitle("Test");
setSize(800,800);
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
initComponents();
}
private void initComponents(){
setLayout(new GridLayout(0, 3));
JPanel po = new JPanel();
JLabel label = new JLabel("Resource");
po.add(label);
add(po);
JPanel po2 = new JPanel();
po2.add(new JComboBox<>(new String[] { "option1", "option2", "option3",}));
add(po2);
JPanel po3 = new JPanel();
JLabel label3 = new JLabel("Something");
po3.add(label3);
add(po3);
//new
JPanel PanelBouton = new JPanel();
JButton bouton = new JButton(new AddResourceAction("Add new"));
add(bouton);
PanelBouton.add(bouton);
add(PanelBouton);
PanelBouton = new JPanel();
JLabel vide = new JLabel("");
PanelBouton.add(vide);
add(PanelBouton);
PanelBouton = new JPanel();
vide = new JLabel("");
PanelBouton.add(vide);
add(PanelBouton);
}
class AddResourceAction extends AbstractAction {
public AddResourceAction(String n){
super(n);
}
@Override
public void actionPerformed(ActionEvent e) {
JPanel po = new JPanel();
JLabel label = new JLabel("Resource");
po.add(label);
add(po);
JPanel po2 = new JPanel();
po2.add(new JComboBox<>(new String[] { "option1", "option2", "option3",}));
add(po2);
JPanel po3 = new JPanel();
JLabel label3 = new JLabel("Something");
po3.add(label3);
add(po3);
revalidate();
}
}
public static void main(String[] args) {
/*display panel*/
SwingUtilities.invokeLater(new Runnable() {
@Override public void run() {
new Display().setVisible(true);
}
});
}
}
Я нашел решение. Если кто-то нуждается в решении в футуре этого вопроса. Вы можете просто удалить Bouton и воссоздать новый после создания новой строки. Не забудьте validate() & repaint() в JFrame. cheers – Mehdi
Это выглядит как табличные данные для меня. Для этого используйте 'JTable'. –