JToggleButtons растягивается для заполнения всего JFrame независимо от setSizeJAVA

Программисты JAVA общаются здесь
Anonymous
JToggleButtons растягивается для заполнения всего JFrame независимо от setSize

Сообщение Anonymous »

Я пытаюсь создать простое приложение Java Swing с пользовательским холстом для рисования и набором элементов управления JToggleButton. Однако в настоящее время кнопки растягиваются, закрывая все окно, закрывая холст и друг друга.
Я пробовал использовать btn.setSize(10, 10), но кнопки все равно расширяются, заполняя весь кадр. Я подозреваю, что это связано с менеджером макетов по умолчанию, но я не уверен, как организовать их так, чтобы они располагались аккуратно (например, в ряд), не закрывая компонент MyCanvas.
Код:

Код: Выделить всё

import java.awt.*;
import javax.swing.*;

class Main {
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(500, 525);

// Custom canvas
MyCanvas canvas = new MyCanvas();
frame.add(canvas);

// Group for buttons
ButtonGroup buttonGroup = new ButtonGroup();

// Creating buttons
createButton("move", frame, buttonGroup);
createButton("grass", frame, buttonGroup);
createButton("water", frame, buttonGroup);
createButton("hole", frame, buttonGroup);
createButton("mountain", frame, buttonGroup);

frame.setVisible(true);
}

private static JToggleButton createButton(String btnname, JFrame frame, ButtonGroup buttonGroup) {
JToggleButton btn = new JToggleButton(btnname);
btn.setSize(10, 10); // This doesn't seem to affect the size
buttonGroup.add(btn);
frame.add(btn); // Adding directly to frame seems to cause the overlap/fill issue
return btn;
}
}

// Placeholder for the canvas class
class MyCanvas extends JComponent {
@Override
public void paintComponent(Graphics g) {
g.setColor(Color.WHITE);
g.fillRect(0, 0, getWidth(), getHeight());
}
}
Я пробовал настроить их вручную с помощью setSize, но, похоже, это не работает.

Вернуться в «JAVA»