setPreferredSize方法,怎样理解。
1.setPreferredSize需要在使用布局管理器的时候使用,布局管理器会获取空间的preferredsize,因而可以生效。例如borderlayout在north中放入一个panel,panel的高度可以通过这样实现:panel.setPreferredSize(new Dimension(0, 100));这样就设置了一个高度为100的panel,宽度随窗口变化。
2.setSize,setLocation,setBounds方法需要在不使用布局管理器的时候使用,也就是setLayout(null)的时候可以使用这三个方法控制布局。
setSize()是你手动来设置组件的大小 。
Dimension 类封装单个对象中组件的宽度和高度(精确到整数)。该类与组件的某个属性关联。由 Component 类和 LayoutManager 接口定义的一些方法将返回 Dimension 对象 。
setPreferredSize设置此组件的首选大小 。
一般会用setPreferredSize。
setSize是设定的固定大小,而setPreferredSize仅仅是设置最好的大小,这个不一定与实际显示出来的控件大小一致(根据界面整体的变化而变化)
把文本框和密码框,在放入一个JPanel里,然后把这个JPanel放入到网格布局里即可。
代码如下
//核心代码第一部分, 设置文本框,密码框长度。
wbk = new JTextField(8);//在这个窗口大小里,设置长度为8,比较合适。
mmk = new JPasswordField(8);//密码框也设置长度为8。
//核心代码第二部分, 把文本框,密码框等加入到JPanel里。
JPanel jpwbk = new JPanel();//1 放文本框的JPanel面板。
jpwbk.add(wbk);//把文本框放入。
jp[0].add(jpwbk);//把JPanl放入网格布局里。
JPanel jpbutton0 = new JPanel();//2 放按钮的JPanel面板(按钮也小点好看点)。
jpbutton0.add(button[0]);。
jp[0].add(jpbutton0);。
jp[0].add(biaoqian[2]);。
JPanel jpmmk = new JPanel();//3 放密码框的JPanel面板。
jpmmk.add(mmk);。
jp[0].add(jpmmk);。
预览图
我觉得还是我的好些。。。
import java.awt.BorderLayout;。
import java.awt.Color;。
import java.awt.FlowLayout;。
import java.awt.GridLayout;。
import java.awt.Toolkit;。
import java.awt.event.MouseAdapter;。
import java.awt.event.MouseEvent;。
import java.io.FileOutputStream;。
import javax.swing.JButton;。
import javax.swing.JFrame;。
import javax.swing.JLabel;。
import javax.swing.JOptionPane;。
import javax.swing.JPanel;。
import javax.swing.JTextField;。
import javax.swing.SwingConstants;。
public class TestSwing extends JFrame{。
private JLabel label1, label2, label3, label4,label5,label6,label7;。
private JPanel panel,panel1,panel2;。
private JTextField tField1,tField2,tField3,tField4,tField5,tField6,tField7,tField8,tField9;。
private JButton button;。
private String filepath="c:\\info.dat";。
public TestSwing(){。
init();
this.setSize(300, 280);。
this.setLocation(。
(Toolkit.getDefaultToolkit().getScreenSize().width - this。
.getSize().width) / 2,。
(Toolkit.getDefaultToolkit().getScreenSize().height - this。
.getSize().height) / 2);。
this.setResizable(false);。
this.setVisible(true);。
this.setTitle("info");。
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);。
}
public void init(){。
initPanel();
initLabel();
initTextField();。
initButton();。
initContent();。
}
private void initContent(){。
panel1.add(label1);。
panel1.add(tField1);。
panel1.add(label2);。
panel1.add(tField2);。
panel1.add(label3);。
panel1.add(tField3);。
panel1.add(label4);。
panel1.add(tField4);。
panel1.add(label5);。
panel1.add(tField5);。
panel1.add(label6);。
panel1.add(tField6);。
panel1.add(label7);。
panel1.add(tField7);。
panel1.add(tField8);。
panel1.add(tField9);。
panel2.add(button);。
panel.add(panel1,BorderLayout.CENTER);。
panel.add(panel2,BorderLayout.SOUTH);。
getContentPane().add(panel);。
}
private void initPanel(){。
panel = new JPanel();。
panel.setLayout(new FlowLayout());。
panel.setBackground(Color.WHITE);。
panel1 = new JPanel();。
GridLayout upLayout = new GridLayout(8, 2);。
panel1.setLayout(upLayout);。
panel2 = new JPanel();。
panel2.setLayout(new FlowLayout());。
}
private void initLabel(){。
label1 = new JLabel("IP地址", SwingConstants.LEFT);。
label2 = new JLabel("端口", SwingConstants.LEFT);。
label3 = new JLabel("访问地址", SwingConstants.LEFT);。
label4 = new JLabel("XXXXX", SwingConstants.LEFT);。
label5 = new JLabel("XXXXX", SwingConstants.LEFT);。
label6 = new JLabel("XXXXX", SwingConstants.LEFT);。
label7 = new JLabel("XXXXX", SwingConstants.LEFT);。
}
private void initTextField(){。
tField1 = new JTextField(10);。
tField2 = new JTextField(10);。
tField3 = new JTextField(10);。
tField4 = new JTextField(10);。
tField5 = new JTextField(10);。
tField6 = new JTextField(10);。
tField7 = new JTextField(10);。
tField8 = new JTextField(10);。
tField9 = new JTextField(10);。
}
private void initButton(){。
button = new JButton("完成");。
button.addMouseListener(new MouseAdapter(){。
//左键点击
public void mouseClicked(MouseEvent e) {。
String ipv = tField1.getText().trim();。
String portv = tField2.getText().trim();。
String addrv = tField3.getText().trim();。
String xx1v = tField4.getText().trim();。
String xx2v = tField5.getText().trim();。
String xx3v = tField6.getText().trim();。
String xx4v = tField7.getText().trim();。
String inputx = tField8.getText().trim();。
String inputxv = tField9.getText().trim();。
createFile(ipv, portv, addrv, xx1v, xx2v, xx3v, xx4v, inputx, inputxv);。
JOptionPane.showMessageDialog(null, "保存成功");。
tField1.setText("");。
tField2.setText("");。
tField3.setText("");。
tField4.setText("");。
tField5.setText("");。
tField6.setText("");。
tField7.setText("");。
tField8.setText("");。
tField9.setText("");。
}
});
}
public static void main(String[]args){。
new TestSwing();。
}
private void createFile(String ipv,String portv ,String addrv,String xx1v,String xx2v,String xx3v,String xx4v,String inputx,String inputxv){。
StringBuffer context = new StringBuffer();。
context.append("ip=").append(ipv).append("\n");。
context.append("port=").append(portv).append("\n");。
context.append("addr=").append(addrv).append("\n");。
context.append("xx1=").append(xx1v).append("\n");。
context.append("xx2=").append(xx2v).append("\n");。
context.append("xx3=").append(xx3v).append("\n");。
context.append("xx4=").append(xx4v).append("\n");。
context.append(inputx).append("=").append(inputxv).append("");。
FileOutputStream fos = null;。
try {
fos = new FileOutputStream(filepath);。
fos.write(context.toString().getBytes());。
} catch (Exception e) {。
} finally {
if (fos != null)。
try {
fos.close();。
} catch (Exception e) {。
}
}
}