У меня есть две формы. Сначала нужно определить номера кнопок с помощью jslider. Вторая форма - отображать jbuttons в соответствии со значением jslider. Когда я нажимаю jbutton2, появляется вторая форма и кнопки отображения. Он работает отлично. Однако я хочу создать jbutton, не щелкнув jbutton2 в первой форме. Вместо этого, когда я изменяю jslider, он должен создавать кнопки во второй форме во время выполнения, и как только я изменяю jslider, он должен снова создать эту сумму кнопки во второй форме и обновить номер кнопки второй формы в соответствии с значением jslider. Я пробовал revalidate() ;, repaint(); но они не работают, они не обновляют вторую форму. Итак, как обновить вторую форму, когда изменится jslider, то есть на первой форме?Как обновить вторую форму
1
A
ответ
1
На самом деле вы должны предоставить фрагмент кода, чтобы мы могли его лучше понять. Но, как правило, я думаю, что могу понять, что вы имеете в виду (если я не ошибаюсь).
В основном вам нужен менеджер компоновки на второй форме. вот пример кода, я надеюсь, что он может в целом ответить на ваши потребности.
Код для первой формы
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JSlider;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
public class FirstForm extends JFrame {
JButton fbtn = new JButton("Show F2");
JSlider fslider = new JSlider(1, 10);
SecondForm fsecond = new SecondForm();
public FirstForm(){
setSize(200,200);
getContentPane().setLayout(new BorderLayout());
getContentPane().add(fbtn,BorderLayout.NORTH);
getContentPane().add(fslider,BorderLayout.CENTER);
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
fbtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
fsecond.setVisible(true);
}
});
fslider.addChangeListener(new ChangeListener() {
@Override
public void stateChanged(ChangeEvent e) {
fsecond.setBtnCount(fslider.getValue());
}
});
}
public static void main(String[] args) {
// TODO code application logic here
java.awt.EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
new FirstForm().setVisible(true);
}
});
}
}
Код для второй формы
import java.awt.Component;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.util.Vector;
import javax.swing.JButton;
import javax.swing.JFrame;
public class SecondForm extends JFrame {
Vector fbtns = new Vector();
int fshowbtncount=1;
GridBagConstraints gbc = new GridBagConstraints();
public SecondForm(){
setSize(200, 200);
setLocation(201, 0);
getContentPane().setLayout(new GridBagLayout());
fbtns.add(new JButton("Button ".concat(String.valueOf(fbtns.size()+1))));
invalidateForm();
}
private void invalidateForm(){
gbc.fill = GridBagConstraints.VERTICAL;
for (int i=0; i<fbtns.size(); i++) {
getContentPane().remove((Component)fbtns.get(i));
}
int y=0;
for (int i=0; i<fshowbtncount; i++) {
gbc.gridx=0;
gbc.gridy=y++;
getContentPane().add((Component)fbtns.get(i),gbc);
}
pack();
invalidate();
}
public void setBtnCount(int cnt){
if (cnt>=0 && cnt!=fshowbtncount) {
fshowbtncount = cnt;
while (fbtns.size()<cnt) {
fbtns.add(new JButton("Button ".concat(String.valueOf(fbtns.size()+1))));
}
invalidateForm();
}
}
}
Надежда это может помочь вам.
Смежные вопросы
- 1. Как открыть вторую форму?
- 2. Как создать вторую форму?
- 3. Как закрыть вторую форму?
- 4. Как показать вторую активность (форму)
- 5. Не удается открыть вторую форму
- 6. Как добавить вторую форму в проект Django?
- 7. Обновить вторую цифру в столбце
- 8. Обновить форму Codeigniter - обновить
- 9. Как обновить форму доступа
- 10. Как обновить форму JQuery
- 11. Бурундук: как обновить форму?
- 12. Открыть вторую форму с текстовым полем
- 13. Открыть вторую форму из третьей формы
- 14. CS1674 Ошибки при попытке открыть вторую форму
- 15. Отправить вторую форму, когда флажок оставлен cheked
- 16. Сделать вторую форму разрешить снова после отключения
- 17. C++, включают в себя вторую форму
- 18. , передавая значение datagridview во вторую форму
- 19. Вставка нескольких меток во вторую форму
- 20. Как обновить форму ExtJS сетки
- 21. Как обновить форму при открытии?
- 22. Как обновить форму в PHP
- 23. Как обновить форму после запроса?
- 24. Не удается обновить вторую панель обновления
- 25. Сбросить/Обновить текущую форму
- 26. Обновить форму с событиями
- 27. Обновить форму с ajax
- 28. JavaScript - Обновить форму поля
- 29. Как создать вторую форму в начале основной формы?
- 30. Как передать нажатия клавиш на вторую активную форму в Firemonkey
Дубликат http://stackoverflow.com/questions/9695833/java-refreshing-second-form –