Я пробовал использовать 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());
}
}