[英]Auto adjust component size in java
我的JFrame具有不同的组件,例如按钮和标签。 我希望我的标签在屏幕分辨率改变时自动调整其高度。 我主要使用NetBeans GUI组件( 拖放 )。
当高度分辨率增加时,每个组件的高度都会像这样增加
是否可以通过某种布局等方式来执行此操作,否则我必须手动获取屏幕分辨率,然后重新粉刷每个组件?
我并不是真正为每个组件手动编写代码,因为大多数情况下,我只是拖放NetBeans。
左侧应该是使用GridLayout(0,1)并保留4个JLabel的JPanel。 可以使用JPanel或BoxLayout将整个内容放置到GridBagLayout中。
我并不是真正为每个组件手动编写代码,因为大多数情况下,我只是拖放NetBeans。
不要这样做 如果需要此功能,请继续阅读并使用布局管理器,而不要盲目地拖放。 您知道您还可以使用NetBeans代码生成工具创建JPanels,并告诉JPanels使用哪种特定的布局。
检测屏幕分辨率变化的一种方法是注册AWTEventListener。
发射后,您可以对照上一个已知值检查分辨率,并相应地调整帧大小。 这是您选择LayoutManager发挥作用的地方。
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class ResolutionChangedDemo implements Runnable
{
private Dimension lastScreenSize;
private JFrame frame;
public static void main(String[] args)
{
SwingUtilities.invokeLater(new ResolutionChangedDemo());
}
public void run()
{
lastScreenSize = Toolkit.getDefaultToolkit().getScreenSize();
AWTEventListener listener = new AWTEventListener()
{
@Override
public void eventDispatched(AWTEvent event)
{
Dimension actualScreenSize = Toolkit.getDefaultToolkit().getScreenSize();
if (! lastScreenSize.equals(actualScreenSize))
{
System.out.println("resolution changed");
lastScreenSize = actualScreenSize;
// Here is where you would resize your frame appropriately
// and the LayoutManager would do the rest
}
}
};
Toolkit.getDefaultToolkit().addAWTEventListener(listener, AWTEvent.PAINT_EVENT_MASK);
frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400, 400);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.