Ответ 1
Каковы проблемы с ограничениями параметров в контейнерах, не изменяемых по размеру?
Предположим, вы скорректируете границы, чтобы хорошо выглядеть на своей платформе. Предположим, что пользовательская платформа имеет шрифт с разными, скажем, большими, FontMetrics
. Этот пример несколько надуман, но вы получаете эту идею. Если вы измените границы контейнера без изменения размера, убедитесь, что любой текст отображается независимо от шрифта по умолчанию для платформы хоста.
import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
/**
* @see http://stackoverflow.com/a/12532237/230513
*/
public class Evil extends JPanel {
private static final String s =
"Tomorrow winning lottery numbers: 42, ";
private JLabel label = new JLabel(s + "3, 1, 4, 1, 5, 9", JLabel.LEFT);
public Evil() {
this.add(label);
}
private void display() {
JFrame f = new JFrame("Evil");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.add(this, BorderLayout.WEST);
f.pack();
int w = SwingUtilities.computeStringWidth(
label.getFontMetrics(label.getFont()), s);
int h = f.getHeight();
f.setSize(w, h);
f.setResizable(false);
f.setLocationRelativeTo(null);
f.setVisible(true);
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
new Evil().display();
}
});
}
}