寫一個簡單的Java界面程序
有時候未免想寫一些有界面的java小程序練練手,那麼如何寫一個比較好看的界面話程序呢?下面小編就帶你一步一步來搭建這個小洋房。
實現界面化編程要用到的一個主要包import javax.swing.*
。下面以一個學生選課界面爲例來窺見如何寫一個界面化程序。主要注意如下內容:
1、創建整體面板容器,把所有其他組件都放在這個容器中。
JPanel contentPane=new JPanel();
2、佈局
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(new BorderLayout(0, 0));
3、內部組件組織
可以給內部加一個表格佈局的面板
JPanel panel=new JPanel(new GridLayout(5, 1,5,10)); // 5行1列的表格佈局
然後把要加的組件添加在這個表格面板中。
下面是程序實例:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.EventQueue;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ButtonGroup;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
import javax.swing.border.EmptyBorder;
import javax.swing.border.TitledBorder;
/**
* 主要實現功能:實現一個學生選課的圖形界面
*/
public class CourseSelectionFrame extends JFrame {
// 定義組件
private static final long serialVersionUID = 1L;
private JPanel contentPane;
private JTextField tfName,tfNum,allInfo;
private JRadioButton rb1,rb2;
private JCheckBox cb1,cb2,cb3;
private JComboBox<String > t1,t2,t3;
public static void main(String[] args) {
// TODO Auto-generated method stub
EventQueue.invokeLater(new Runnable() {
public void run() {
try{
CourseSelectionFrame frame=new CourseSelectionFrame(); // 創建一個窗口
frame.setVisible(true); // 讓該窗口實例可見
}catch (Exception e) {
e.printStackTrace();
}
}
});
// CourseSelectionFrame frame=new CourseSelectionFrame();
// frame.setVisible(true);
}
/**
* 窗口屬性的設置,內部組件的初始化
*/
public CourseSelectionFrame(){
setTitle("選課ing......"); // 標題
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 設置關閉時推出JVM
setSize(500,400); // 設置窗口大小
setLocationRelativeTo(null); // 設置窗體居中
contentPane=new JPanel(); // 內容面板
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(new BorderLayout(0, 0)); // 設置佈局
setContentPane(contentPane);
JPanel panel=new JPanel(new GridLayout(5, 1,5,10)); // 5行1列的表格佈局
panel.setBorder(new TitledBorder(null,"",TitledBorder.LEADING ,TitledBorder.TOP,null,null));
contentPane.add(panel,BorderLayout.CENTER); // 給panel添加邊框
// 第一行
JPanel panel_1=new JPanel();
panel.add(panel_1);
JLabel label=new JLabel("姓名");
panel_1.add(label);
tfName=new JTextField();
panel_1.add(tfName);
tfName.setColumns(10);
JLabel label_2=new JLabel("學號");
panel_1.add(label_2);
tfNum=new JTextField();
tfNum.setColumns(10);
panel_1.add(tfNum);
rb1=new JRadioButton("男");
panel_1.add(rb1);
rb1.setSelected(true); // 設置單選按鈕中,默認選中的按鈕
rb2=new JRadioButton("女");
panel_1.add(rb2);
ButtonGroup bts=new ButtonGroup(); // 單選按鈕需要加入到同一個ButonGroup中才能生效
bts.add(rb1);
bts.add(rb2);
// 第二行
JPanel panel_2=new JPanel();
panel.add(panel_2);
cb1=new JCheckBox("高等數學");
panel_2.add(cb1);
t1=new JComboBox<String >();
t1.setModel(new DefaultComboBoxModel<String>(new String[]{"林老師","趙老師","孫老師"}));
panel_2.add(t1);
// 第三行
JPanel panel_3=new JPanel();
panel.add(panel_3);
cb2=new JCheckBox("世界經濟");
panel_3.add(cb2);
t2=new JComboBox<String >();
t2.setModel(new DefaultComboBoxModel<String >(new String[]{"張老師","劉老師"}));
panel_3.add(t2);
//第四行
JPanel panel_4=new JPanel();
panel.add(panel_4);
cb3=new JCheckBox("音樂賞析");
panel_4.add(cb3);
t3=new JComboBox<String >();
t3.setModel(new DefaultComboBoxModel<String>(new String[]{"王老師","周老師"}));
panel_4.add(t3);
// 第五行
JPanel panel_5=new JPanel();
panel.add(panel_5);
JButton jbOk=new JButton("確定");
panel_5.add(jbOk);
JButton jbRest=new JButton("重填");
panel_5.add(jbRest);
// 添加選課信息
JPanel panelSouth=new JPanel();
contentPane.add(panelSouth,BorderLayout.SOUTH);
JLabel labe=new JLabel("選課信息");
labe.setHorizontalAlignment(SwingConstants.LEFT);
panelSouth.add(labe);
allInfo=new JTextField();
allInfo.setColumns(30);
panelSouth.add(allInfo);
//添加標題
JPanel panelNorth=new JPanel();
contentPane.add(panelNorth,BorderLayout.NORTH);
JLabel labelTitle=new JLabel("學生選課系統");
labelTitle.setForeground(Color.DARK_GRAY);
labelTitle.setFont(new Font("宋體", Font.BOLD, 20));
panelNorth.add(labelTitle);
// 給確定按鈕添加事件處理代碼
jbOk.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
StringBuilder info=new StringBuilder();
String name=tfName.getText();
String num=tfNum.getText();
String sex;
if(rb1.isSelected()){
sex="男";
}else {
sex="女";
}
info.append(name+num+sex);
if(cb1.isSelected()){
String c=cb1.getText();
String t=t1.getSelectedItem().toString();
info.append(":"+c+t);
}
if(cb2.isSelected()){
String c=cb2.getText();
String t=t2.getSelectedItem().toString();
info.append(","+c+t);
}
if(cb3.isSelected()){
String c=cb3.getText();
String t=t3.getSelectedItem().toString();
info.append(","+c+t);
}
allInfo.setText(info.toString()); // 把學生信息和選課信息放到文本框中
}
});
// 給重填按鈕設置事件處理代碼
jbRest.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
tfName.setText("");
tfNum.setText("");
rb1.setSelected(true);
cb1.setSelected(false);
t1.setSelectedIndex(0);
cb2.setSelected(false);
t2.setSelectedIndex(0);
allInfo.setText("");
}
});
}
}
結果如下圖所示: