测试 Label JLabel Button JButton 在 BorderLayout中setPreferredSize()的效果
- 子部件.setPreferredSize时, 东西width起作用,南北height起作用, center都不起作用
- 子Component的setPreferredSize(Dimension preferredSize) 在 南北 时 height起作用
- 子Component的setPreferredSize(Dimension preferredSize) 在 东西 时 width起作用
- 子Component的setPreferredSize(Dimension preferredSize) 在 中部 时 不起作用
package component;
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.*;
public class 测试SetPreferredSize在BorderLayout中有没有用2205222007 {
static void pln() {System.out.println("");}
static void pln(Object o) {System.out.println(o);}
static void pln(Object o1, Object o2) {pln(o1+" 的结果是 "+o2);}
static Frame frame = new Frame("测试SetPreferredSize在BorderLayout中有没有用2205222007");
static {
frame.addWindowListener(new WindowAdapter() {
@Override public void windowClosing(WindowEvent ev) {
System.exit(0);
}
});
// frame.setPreferredSize(new Dimension(1600,800)); //无用
frame.setBounds(100,100,1600,800);
}
public static void main(String...arguments) throws Exception{
Label label = new Label("Label setPreferredSize(new Dimension(600, 0)", Label.CENTER); frame.add(label, BorderLayout.EAST);
label.setBackground(Color.blue);
label.setPreferredSize(new Dimension(600, 0));
// label.setSize(800,200); //无效
JLabel jlb010 = new JLabel("JLabel setPreferredSize(new Dimension(300,10))", JLabel.CENTER); frame.add(jlb010, BorderLayout.WEST);
jlb010.setBackground(Color.YELLOW);
jlb010.setPreferredSize(new Dimension(300,10));
jlb010.setOpaque(true);
Button button = new Button("Button setPreferredSize(new Dimension(9999,200)"); frame.add(button, "North"); button.setPreferredSize(new Dimension(9999,200));
JButton jButton = new JButton("JButton setPreferredSize(new Dimension(9999,100)"); frame.add(jButton, "South"); jButton.setPreferredSize(new Dimension(9999,100));
JButton jButton2 = new JButton("JButton setPreferredSize(new Dimension(1,1)"); frame.add(jButton2, "Center"); jButton2.setPreferredSize(new Dimension(1,1));
frame.setVisible(true);
好酒在张工("java.awt.Label");
好酒在张工("java.awt.Button");
好酒在张工("javax.swing.JLabel");
好酒在张工("javax.swing.JButton");
}
public static void 好酒在张工(String className) throws Exception{
Frame frame = (Frame)Class.forName("java.awt.Frame").getDeclaredConstructor(String.class).newInstance("测试SetPreferredSize在BorderLayout中有没有用2205222007");
frame.addWindowListener(new WindowAdapter() {
@Override public void windowClosing(WindowEvent ev) {
System.exit(0);
}
});
// frame.setPreferredSize(new Dimension(1600,800)); //无用
frame.setBounds(100,100,1600,800);
String dxnbz[] = new String[] {"East" , "West" , "South" , "North" , "Center"};
for(int i=0; i<dxnbz.length; i++) {
Component component = (Component) Class.forName(className).getDeclaredConstructor(String.class).newInstance(dxnbz[i]);
switch (dxnbz[i]) {
case"East": component.setBackground(Color.RED); break;
case"West": component.setBackground(Color.ORANGE); break;
case"South": component.setBackground(Color.YELLOW); break;
case"North": component.setBackground(Color.GREEN); break;
case"Center": component.setBackground(Color.CYAN); break;
}
component.setPreferredSize(new Dimension(300,200));
pln("查看默认的isOpaque() ,Component的false表示为轻量级组件, JComponent的true为不透明,看得到background, component.getClass()="+component.getClass()+" component.isOpaque()==", component.isOpaque());
if(component.getClass()==JLabel.class) {
JLabel jlb = (JLabel)component;
jlb.setOpaque(true); // JLabel默认的opaque是false, 看不到background;
pln("jlb.setOpaque(true);后, jlb.isOpaque()=", jlb.isOpaque());
}
frame.add(component, dxnbz[i]);
}
frame.setVisible(true);
}
}
都是东西width起作用,南北height起作用, center都不起作用