先看一下效果
啥也不说了,直接上程序对比。
程序1:
import java.awt.BorderLayout;
import java.awt.Dimension;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
public class Client extends JFrame{
private JTextField textField;
private JTextArea textArea;
public Client(){
setTitle("客户端");
setBounds(100, 100, 373, 257);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final JPanel panel = new JPanel();
this.add(panel,BorderLayout.NORTH);
final JLabel label = new JLabel();
label.setText("路径:");
panel.add(label);
textField = new JTextField();
textField.setPreferredSize(new Dimension(140, 25));
panel.add(textField);
final JButton button = new JButton();
button.setText("选择视频");
panel.add(button);
final JButton button2 = new JButton();
button2.setText("发送");
panel.add(button2);
final JScrollPane scrollPane = new JScrollPane();
this.add(scrollPane,BorderLayout.CENTER);
textArea = new JTextArea();
scrollPane.setViewportView(textArea);
}
public static void main(String[] args) {
Client client = new Client();
client.setVisible(true);
}
}
程序2:
import java.awt.BorderLayout;
import java.awt.Dimension;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
public class Client extends JFrame{
private JTextField textField;
private JTextArea textArea;
public Client(){
final JPanel panel = new JPanel();
final JLabel label = new JLabel();
label.setText("路径:");
panel.add(label);
textField = new JTextField();
textField.setPreferredSize(new Dimension(140, 25));
panel.add(textField);
final JButton button = new JButton();
button.setText("选择视频");
panel.add(button);
final JButton button2 = new JButton();
button2.setText("发送");
panel.add(button2);
this.add(panel,BorderLayout.NORTH);
final JScrollPane scrollPane = new JScrollPane();
textArea = new JTextArea();
scrollPane.setViewportView(textArea);
this.add(scrollPane,BorderLayout.CENTER);
setTitle("客户端");
setBounds(100, 100, 373, 257);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
public static void main(String[] args) {
Client client = new Client();
}
}
显著的区别:
1. setVisible()位置不同。
2.构造函数中,组件的添加顺序不同。程序1按照从小到大的顺序,程序2按照从大到小的顺序。
程序1必须在构造对象之后,使用setVisible方法,否则无法正常显示组件。原因不详。