06n*_*amt 2 java swing jframe jbutton
我有这个代码
package com.net.Forms;
import javax.swing.JButton;
import javax.swing.JFrame;
public class MainForm {
protected static JFrame window = new JFrame("Test Form");
protected static JButton btnOK = new JButton("OK!");
public static void Main() {
load();
return;
}
public static void load() {
window.setSize(500, 500);
window.setVisible(true);
//btnOK.setSize(50, 50); //here
window.add(btnOK);
btnOK.setEnabled(true);
btnOK.setVisible(true);
}
}
Run Code Online (Sandbox Code Playgroud)
为什么按钮仍然填充框架而不是如上所述的50 X 50
任何帮助,将不胜感激
为默认布局JFrame是BorderLayout.这就是为什么当您添加JButton到它,它被添加JButton到center和扩大其覆盖整个窗口.BorderLayout不尊重setSize(..)添加到它们的组件的方法.如果你还是想给正在增加了首选大小的组件JFrame,你应该改变布局是FlowLayout或GridLayout或其他..然后使用setPreferredSize(..)方法与组件,同时将它添加到JFrame.例如,您的代码可以通过以下方式进行修改.
import java.awt.*;
import javax.swing.*;
public class MainForm {
protected JFrame window = new JFrame("Test Form");
protected JButton btnOK = new JButton("OK!");
public static void main(String st[]) {
SwingUtilities.invokeLater( new Runnable()
{
public void run()
{
MainForm mf = new MainForm();
mf.load();
}
});
}
public void load() {
Container c = window.getContentPane();
c.setLayout(new FlowLayout());//Set layout to be FlowLayout explicitly.
btnOK.setPreferredSize(new Dimension(100,50));//use set PreferredSize
c.add(btnOK);
c.setSize(500, 500);
c.setVisible(true);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4992 次 |
| 最近记录: |