thiết lập vị trí và kích thước cho các nút trong java
Tôi đang lập dự án (bảng tuần hoàn) và gặp một chút vấn đề với Swing và GridBagLayout, tức là khi tôi muốn nhận các nút lớn hơn một chút, không có gì thay đổi hoặc tôi nhận được các nút chiếm toàn bộ màn hình của mình. Tại sao? Làm thế nào tôi có thể làm cho nó lớn hơn một chút? Và làm cách nào để đặt các nút KHÔNG ở chính giữa? Mã của tôi (tôi đang sử dụng Swing và GridBagLayout):
GridBagConstraints c = new GridBagConstraints();
JButton H,He,Li,Be,B,C,N,O,F,Ne;
public MyPanel() {
setPreferredSize(new Dimension(500,500));
setBackground(Color.GREEN);
setLayout(new GridBagLayout());
//Wodór
H=new JButton("H");
c.anchor=GridBagConstraints.FIRST_LINE_START;
c.weightx=1;
c.weighty=1;
c.gridwidth=2;
c.gridheight=2;
c.gridx=0;
c.gridy=0;
add(H,c);
//Hel
He=new JButton("He");
c.anchor=GridBagConstraints.FIRST_LINE_END;
c.gridx=34;
add(He,c);
//Lit
Li=new JButton("Li");
c.weighty=0;
c.gridx=0;
c.gridy=2;
add(Li,c);
//Beryl
Be=new JButton("Be");
c.gridx=2;
add(Be,c);
//Bar
B=new JButton("B");
c.gridx=24;
add(B,c);
//Węgiel
C=new JButton("C");
c.gridx=26;
add(C,c);
//Azot
N=new JButton("N");
c.gridx=28;
add(N,c);
//Tlen
O=new JButton("O");
c.gridx=30;
add(O,c);
//Fluor
F=new JButton("F");
c.gridx=32;
add(F,c);
//Neon
Ne=new JButton("Ne");
c.gridx=34;
add(Ne,c);
}
}
Trả lời
Đây là hình ảnh của Bảng tuần hoàn mà tôi nhận được từ DuckDuckGo.
Nhìn vào bảng, tôi đề xuất hai GridLayouts, một cho các phần tử và một cho hai chuỗi ở dưới cùng. Bạn sẽ phải sử dụng giả JPanelsđể điền vào phần trống của các phần tử GridLayout.
Tôi cũng đề nghị rằng thay vì JButtons, bạn tạo một mô hình JPanelđể chứa chữ viết tắt của nguyên tố, tên nguyên tố, số nguyên tử và trọng lượng nguyên tử. Bạn sẽ tạo một phiên bản của mô hình JPanelcho mỗi phần tử.
Bằng cách sử dụng mô hình JPanels, bạn có thể dễ dàng tô màu nền hơn.