У меня есть две кнопки, одна из которых называется btnShort
и одна из них - btnLong
. Я бы хотел, чтобы они были одинаковой ширины, так что будет лучшим вариантом?Как я могу создать 2 экземпляра JButton с одинаковой шириной
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class TestCode2 {
public static void main(String[] args) {
JFrame window = new JFrame("Test2");
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setSize(400, 200);
// ---------------------------------------------------------------------
GridBagLayout layout = new GridBagLayout();
GridBagConstraints constraints = new GridBagConstraints();
JPanel container = new JPanel(layout);
window.add(container);
constraints.gridy = 0;
JButton btnShort = new JButton("Short");
layout.setConstraints(btnShort, constraints);
container.add(btnShort);
constraints.gridy = 1;
JButton btnLong = new JButton("That's a long button");
layout.setConstraints(btnLong, constraints);
container.add(btnLong);
//This one won't work because button dimension is not known yet...
//btnShort.setPreferredSize(new Dimension(btnLong.getWidth(), btnLong.getHeight()));
// ---------------------------------------------------------------------
window.setVisible(true);
}
}
Ну, это сложно. Я не вижу причины вызова нового метода «Run()» - он работает без, но я не понимаю, почему кнопки выглядят по-другому в этом случае !!! –
Причина для invokeLater объясняется в [Inital Threads] (http://docs.oracle.com/javase/tutorial/uiswing/concurrency/initial.html). Если вы установите ограничение weightX, это изменит размер всех компонентов для столбца, чтобы занять заданное пространство. Этот пример просто использует ограничение заполнения HORIZONTAL, чтобы запросить, чтобы все компоненты в столбце заполнили столбец – MadProgrammer
Извините, но я все еще не получаю ** почему ** вы использовали 'invokeLater()'? Как я уже сказал, все работает нормально, но имеет другой аспект (другое, что я не понимаю) –