Java 多个JPanel-所有按钮大小相同
我有一个主面板,其中包含多个面板。每个“子”面板包含一个(或多个)JButton。因为我同时显示所有面板,所以我希望所有按钮的大小都相同(以保持一致性) 此代码说明了我的问题:Java 多个JPanel-所有按钮大小相同,java,jpanel,size,jbutton,miglayout,Java,Jpanel,Size,Jbutton,Miglayout,我有一个主面板,其中包含多个面板。每个“子”面板包含一个(或多个)JButton。因为我同时显示所有面板,所以我希望所有按钮的大小都相同(以保持一致性) 此代码说明了我的问题: public class Test { public static void main(String[] args) { JFrame f = new JFrame(); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f
public class Test
{
public static void main(String[] args)
{
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setSize(new Dimension(200, 200));
// 1st Panel
JPanel panel1 = new JPanel(new MigLayout());
panel1.add(new JButton("button in panel 1"));
// 2nd Panel
JPanel panel2 = new JPanel(new MigLayout());
panel2.add(new JButton("2nd button"));
JPanel parent = new JPanel(new MigLayout("wrap"));
parent.add(panel1, "pushx, growx");
parent.add(new JSeparator(), "pushx, growx");
parent.add(panel2, "pushx, growx");
f.add(parent);
f.setVisible(true);
}
}
“面板1中的按钮”的大小与另一个面板中的按钮不同。是否有一种“简单”的方法来使用布局设置它们的大小?(硬编码大小是而不是选项) 我认为您没有仔细阅读文档,以演示我编写的代码的用途。您不应该复制该链接中显示的相同代码段。他们指定必须将更新的组件传递到方法中。您可以通过将“大”替换为“小”或“小”来替换大小
最简单的方法是java中的外观。但它只提供了按钮大小的三种可能变化。检查此链接我使用的是Nimbus LAF,我添加了sizeVariant属性,但我仍然没有得到想要的结果。您是如何更改大小的?您能告诉我吗,因为我共享的链接是java文档,这意味着如果您正确遵循说明,它应该可以工作这就是我所做的:
JButton b1=JButton(“面板1中的按钮”);
b1.putClientProperty(“JComponent.sizeVariant”,“small”);
panel1.add(b1);
JButton b2=JButton(“第二个按钮”);
b2.putClientProperty(“JComponent.sizeVariant”,“small”);panel2.add(b2)
在使框架可见之前,我添加了:SwingUtilities.updateComponentTreeUI(f);
我是否遗漏了什么?
import javax.swing.*;
import java.awt.*;
public class Demo {
/**
* @param args
*/
JFrame frame ;
JButton btn;
public Demo()
{
frame = new JFrame("Example");
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400,400);
frame.setLayout(new FlowLayout());
btn = new JButton("Example");
btn.putClientProperty("JComponent.sizeVariant", "large");
SwingUtilities.updateComponentTreeUI(btn);
frame.add(btn);
frame.setVisible(true);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
try
{
UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
}
catch(Exception e)
{
e.printStackTrace();
}
Demo d = new Demo();
}
}