Try что-то вроде этого:
// The size of the window.
Rectangle bounds = this.getBounds();
// How many rows of buttons.
int numOfRows = 100;
// How many buttons per row.
int numOfColumns = 50;
int buttonWidth = bounds.width/numOfRows;
int buttonHeight = bounds.height/numOfColumns;
int x = 0;
int y = 0;
for(int i = 0; i < numOfColumns; i++){
for(int j = 0; j < numOfRows; j++){
// Make a button
button.setBounds(x, y, buttonWidth, buttonHeight);
y += buttonHeight;
}
x += buttonWidth;
}
Это сделает все кнопки подходящими внутри вашего окна.
Вот ссылка на прямоугольники, они очень удобны при выполнении таких вещей. http://help.eclipse.org/helios/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2Freference%2Fapi%2Forg%2Feclipse%2Fswt%2Fgraphics%2FRectangle.html
Кроме того, вы все равно можете использовать windowbuilder, infact, который я рекомендую вам сделать. Это действительно помогает вам визуализировать нужные размеры. И вы также можете создать материал (кнопки, списки, выпадающие списки ... и т. Д.) Вручную с кодом и, предположив, что вы поместили переменные, в которых WindowBuilder, он все равно отобразит их на вкладке «дизайн».
Надеюсь, это поможет!
EDIT: Я был своего рода смутное о том, как сделать кнопки с помощью петли
Для того, чтобы кнопки с петлей вы будете нуждаться в буфер (для хранения временной кнопку достаточно долго, чтобы добавить в список) и .. . список: D.
Вот как это должно выглядеть:
Вне цикла:
// The list to store your buttons in.
ArrayList<Button> buttons = new ArrayList<Button>();
// The empty button to use as a buffer.
Button button;
Внутри цикла (где '// Сделать кнопку' комментарий):
button = new Button(this, SWT.NONE);
buttons.add(button);
Теперь вы имеют список всех кнопок и могут легко обращаться к ним и вносить изменения, такие как изменение текста кнопок;
buttons.get(indexOfButton).setText("SomeText");
EDIT:
Видя, как вы новичок в SWT (и я не мог получить AWT/JFrame работать) вот полный код.
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
public class ButtonTest extends Shell {
/**
* Launch the application.
* @param args
*/
// Code starts here in main.
public static void main(String args[]) {
try {
Display display = Display.getDefault();
// Creates a window (shell) called "shell"
ButtonTest shell = new ButtonTest(display);
// These two lines start the shell.
shell.open();
shell.layout();
// Now we can start adding stuff to our shell.
// The size of the window.
Rectangle bounds = shell.getBounds();
// How many rows of buttons.
int numOfRows = 5;
// How many buttons per row.
int numOfColumns = 3;
int buttonWidth = bounds.width/numOfRows;
int buttonHeight = bounds.height/numOfColumns;
Button button;
int x = 0;
int y = 0;
for(int i = 0; i < numOfColumns; i++){
for(int j = 0; j < numOfRows; j++){
button = new Button(shell, SWT.NONE);
button.setBounds(x, y, buttonWidth, buttonHeight);
x += buttonWidth;
}
x = 0;
y += buttonHeight;
}
// This loop keeps the shell from killing itself the moment it's opened
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* Create the shell.
* @param display
*/
public ButtonTest(Display display) {
super(display, SWT.SHELL_TRIM);
createContents();
}
/**
* Create contents of the shell.
*/
protected void createContents() {
setText("SWT Application");
setSize(800, 800);
}
@Override
protected void checkSubclass() {
// Disable the check that prevents subclassing of SWT components
}
Кроме того, я сделал немного опечатку в моем вложенном цикле (и забыл сбросить й значение 0 после каждой строки). Это исправлено в этом редактировании.
Также вам нужно будет импортировать swt для этого. Перейдите сюда: http://www.eclipse.org/swt/ и загрузите последнюю версию своей операционной системы, затем зайдите в затмение, щелкните правой кнопкой мыши свой проект> Путь сборки> Настроить путь сборки> вкладка «Библиотеки»> Добавить внешний JAR> найдите загруженный файл swt и нажмите.
Извините за такой длинный ответ, надеюсь, что это помогает: D
использование JToggleButton для системы резервирования – mKorbel