Пытаюсь добится того, чтобы дочерний элемент нарисовал рамку с небольшим отступом от края окна, но получить размер окна в случае когда он задается через setExtendedState() не получается. Может быть есть более удачная альтернатива?
public class MainProc extends JFrame
{
MainProc()
{
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setExtendedState(JFrame.MAXIMIZED_BOTH);
System.out.print("Height: " + this.getHeight() + " Width: " + this.getWidth());
Area gArea = new Area();
Dimension dim = new Dimension(this.getHeight() - 10, this.getWidth() - 10);
gArea.setPreferredSize(dim);
add(gArea);
setLayout(new FlowLayout());
setVisible(true);
}
public static void main(String Args[])
{
new MainProc();
}
}
class Area extends JLabel
{
Area()
{
setBorder(BorderFactory.createLineBorder(Color.BLACK));
}
}
Вот это решение немного проще и более гибкое
public class MainProc extends JFrame {
MainProc() {
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
setExtendedState(JFrame.MAXIMIZED_BOTH);
BorderLayout layout = new BorderLayout();
setLayout(layout);
JPanel panel = new JPanel();
panel.setBorder(
new CompoundBorder(
new EmptyBorder(10,10,10,10),
new LineBorder(Color.black, 1)
)
);
add(panel, BorderLayout.CENTER);
// остальные компоненты добавляйте в panel
setVisible(true);
}
public static void main(String Args[]) {
new MainProc();
}
}
Вот такой вариант я нашел чтобы решить задачу, на мой взгляд он не самый удачный, пускай он и решает задачу.
public class MainProc extends JFrame
{
MainProc()
{
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setExtendedState(JFrame.MAXIMIZED_BOTH);
System.out.print("Height: " + this.getHeight() + " Width: " + this.getWidth());
Area gArea = new Area();
Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
dim.height -= 30;
dim.width -= 10;
gArea.setPreferredSize(dim);
add(gArea);
setLayout(new FlowLayout());
setVisible(true);
}
public static void main(String Args[])
{
new MainProc();
}
}
class Area extends JLabel
{
Area()
{
setBorder(BorderFactory.createLineBorder(Color.BLACK));
}
}
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости