我有一个主面板,里面有多个面板。每个“子”面板包含一个(或多个)JButton。由于我同时显示所有面板,我想让所有按钮尺寸相同(以保持一致性)。
此代码说明了我的问题:
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中的按钮”的大小与其他面板中的按钮不同。是否有一种“简单”的方法来使用布局设置其大小? (硬编码大小为 NOT 一个选项)。
答案 0 :(得分:0)
我认为您没有仔细阅读该文档,以证明我编写代码的用法。您不应该复制该链接中显示的相同代码段。他们已指定您更新的组件必须传递到updateComponentTreeUI()方法。您可以通过将“large”替换为“small”或“mini”来替换大小。
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();
}
}