Tôi có 2 JPanels trong một khung. Bảng điều khiển đầu tiên chứa các mục java giống như các nút vv. Hai nút tôi đã thêm sẽ xuất hiện nhưng JSpinner xuất hiện ngay sau khi tôi thay đổi kích thước cửa sổ. Tôi đoán điều này cũng sẽ xảy ra với các mục khác mà tôi sẽ thêm vào. Làm thế nào tôi có thể giải quyết vấn đề này?Các mục Java chỉ xuất hiện sau khi cửa sổ đổi kích thước
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JSpinner;
import javax.swing.SpinnerListModel;
import javax.swing.SpinnerNumberModel;
public class StartingPoint {
static JFrame window;
static DrawingArea draw;
static JButton b1, b2;
static JPanel userInt;
static JSpinner gravitySpinner;
public static void main(String[] args) {
window = new JFrame("Ball");
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setSize(600, 400);
window.setLayout(new BorderLayout());
window.setVisible(true);
draw = new DrawingArea();
window.add(draw, BorderLayout.CENTER);
userInt = new JPanel();
window.add(userInt, BorderLayout.NORTH);
b1 = new JButton("Start");
b2 = new JButton("aaa");
b1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
draw.setUp();
}
});
userInt.add(b1);
userInt.add(b2);
SpinnerNumberModel gravityModel = new SpinnerNumberModel(.9, .1, 2, .1);
gravitySpinner = new JSpinner(gravityModel);
userInt.add(gravitySpinner);
}
}
Và bạn muốn bọc tất cả mã của mình trong phương thức chính trong lời gọi 'EventQueue.invokeLater()' để tôn trọng [Chính sách truyền luồng xoay] (http://docs.oracle.com/javase/7/docs/ api/javax/swing/package-summary.html # luồng) – Robin
Tôi nên di chuyển tất cả mã của mình từ phương thức chính trong phương thức chạy và trong toán học chính tôi phải thêm $ SwingUtilities.invokeLater này (new StartingPoint()); ? – Alex
@Alex: Bạn sẽ loại bỏ mọi thứ * tĩnh trong đoạn mã trên, tạo JPanel gui của bạn trong lớp, sau đó tạo chính Runnable để khởi tạo lớp, thêm JPanel của lớp vào JFrame và sau đó hiển thị JFrame. Ví dụ: xem ** Chỉnh sửa 2 ** ở trên. –