在java中自动调整组件大小
我有JFrame,它有不同的组件,比如按钮和标签。我希望我的标签在屏幕分辨率更改时自动调整其高度。我主要使用NetBeans GUI组件(拖放) 当高度分辨率增加时,每个组件的高度都会像这样增加 是否有任何方法可以通过某种布局等来实现,或者我必须手动获得屏幕分辨率,然后重新绘制每个组件在java中自动调整组件大小,java,swing,user-interface,netbeans,Java,Swing,User Interface,Netbeans,我有JFrame,它有不同的组件,比如按钮和标签。我希望我的标签在屏幕分辨率更改时自动调整其高度。我主要使用NetBeans GUI组件(拖放) 当高度分辨率增加时,每个组件的高度都会像这样增加 是否有任何方法可以通过某种布局等来实现,或者我必须手动获得屏幕分辨率,然后重新绘制每个组件 我不是一个真正的为每个组件手动编码的人,因为我主要只是在NetBeans中拖放。左侧应该是一个JPanel,它使用一个GridLayout(0,1),然后保存4个JLabel。可以使用JPanel或BoxLa
我不是一个真正的为每个组件手动编码的人,因为我主要只是在NetBeans中拖放。左侧应该是一个JPanel,它使用一个GridLayout(0,1),然后保存4个JLabel。可以使用JPanel或BoxLayout将整个内容放置到GridBagLayout中 我并不是一个真正的为每个组件手工编码的人,因为我主要只是拖放NetBeans
不要这样做。如果需要此功能,请阅读并使用布局管理器,而不是盲目地拖放。您知道,您还可以使用NetBeans代码生成工具创建JPanel,并告诉JPanel要使用哪些特定布局。检测屏幕分辨率变化的一种方法是注册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);
}
}
你怎么能那么快?我当时正在写一篇关于GridBagLayout的评论,当它出现时,我对使用布局有一些想法,但对此不确定。让我检查一下,然后接受你的答案,如果这个方法有效的话。@Of theels和关于swing tough的知识,我仍然在努力与你这样的大师竞争,MadProgrammer,peeskillet,等等。虽然我还是个新手,但我从你们身上学到了很多C:@AbdulJabbarWebBestow:注意,首选的JLabel大小可以根据它们显示的文本字体或图像的大小而改变。@HoverCraftFullOfels这不会随着分辨率的改变而改变