Jframe изменил размер ниже минимума своей панели контентаJAVA

Программисты JAVA общаются здесь
Anonymous
Jframe изменил размер ниже минимума своей панели контента

Сообщение Anonymous »

Почему я могу сократить минимальную ширину его панели содержимого, и как мне сделать Swing обеспечить ограничение?

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

import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import javax.swing.WindowConstants;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
import java.awt.event.ComponentListener;

public class PanelExample {

JPanel panel;
JLabel panelWidthLabel;

public static void main(String[] args) {
SwingUtilities.invokeLater(new PanelExample()::launch);
}

private void launch() {
JFrame frame = new JFrame("Panel Example");
frame.setContentPane(createPanel());
frame.setLocationRelativeTo(null);
frame.pack();
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.setVisible(true);
}

private JPanel createPanel() {
panel = new JPanel();
panelWidthLabel = new JLabel();
panel.add(panelWidthLabel);
panel.addComponentListener(onComponentResized(this::displayPanelDimension));
panel.setBorder(BorderFactory.createLineBorder(Color.RED, 3));
panel.setPreferredSize(new Dimension(250, 150));
panel.setMinimumSize(new Dimension(200, 150)); // not honored
return panel;
}

private static ComponentListener onComponentResized(Runnable onComponentResized) {
return new ComponentAdapter() {
@Override
public void componentResized(ComponentEvent e) {
onComponentResized.run();
}
};
}

private void displayPanelDimension() {
Dimension panelSize = panel.getSize();
panelWidthLabel.setText(createDimensionText(panelSize));
}

private static String createDimensionText(Dimension dimension) {
String dimensionText = String.format("%d:%d", (int) dimension.getWidth(), (int) dimension.getHeight());
return dimensionText;
}
}


Подробнее здесь: https://stackoverflow.com/questions/796 ... es-minimum

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