Как сделать компактную сетку с изменяемыми размерами JButtons? - PullRequest
0 голосов
/ 19 марта 2012

Я пытаюсь повторно использовать функциональность компактной сетки Swing SpringLayout для создания компактной сетки изменяемых размеров JButtons, используя: http://docs.oracle.com/javase/tutorial/uiswing/layout/spring.html

Это работает нормально, но SpringLayout не может изменить размеры JButtons, поэтому для меня это бесполезно.Есть ли какой-нибудь другой способ создать компактную сетку с изменяемыми J-кнопками на ней?

Ответы [ 2 ]

2 голосов
/ 19 марта 2012
A: Use GridLayout, use GridBagLayout, write your own LayoutManager.
Q: How can I write my own LayoutManager?

пожалуйста, нет, для Swing Guru вроде как @StanislavL как-то не сложно написать собственный LayoutManager, для остальных из нас лучше использовать MigLayout или GridBagLayout,

1 голос
/ 19 марта 2012

Вы можете использовать GridBagLayout для этого.Вот пример, показывающий две кнопки: одна сохраняет свою ширину, а другая изменяет свою ширину при изменении размера рамки.

Обратите внимание на GridBagConstraints, которые сообщают компоненту, как он должен вести себя в макете.Вес контролирует поведение при изменении размера.Дополнительную информацию можно найти в Java Tutorials .

package test;

import java.awt.Button;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;

import javax.swing.JFrame;

public class LayoutResizeButtonTest extends JFrame {

    public static void main(String[] args) {

        LayoutResizeButtonTest app = new LayoutResizeButtonTest();

        app.setDefaultCloseOperation(EXIT_ON_CLOSE);
        app.setVisible(true);

    }

    LayoutResizeButtonTest() {

        this.setLayout(new GridBagLayout());

        GridBagConstraints c = new GridBagConstraints();
        c.fill = GridBagConstraints.HORIZONTAL;
        c.weightx = 1.0;

        this.add(new Button("Resizable"), c);

        c = new GridBagConstraints();
        c.weightx = 0.0;

        this.add(new Button("Not Resizable"));

        this.pack();

    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...