import javax.swing.BorderFactory;
成都創(chuàng)新互聯(lián)專(zhuān)注于網(wǎng)站建設(shè)|網(wǎng)站建設(shè)維護(hù)|優(yōu)化|托管以及網(wǎng)絡(luò)推廣,積累了大量的網(wǎng)站設(shè)計(jì)與制作經(jīng)驗(yàn),為許多企業(yè)提供了網(wǎng)站定制設(shè)計(jì)服務(wù),案例作品覆蓋成都建筑動(dòng)畫(huà)等行業(yè)。能根據(jù)企業(yè)所處的行業(yè)與銷(xiāo)售的產(chǎn)品,結(jié)合品牌形象的塑造,量身建設(shè)品質(zhì)網(wǎng)站。
import javax.swing.ButtonGroup;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
public class aaa
{
/**
* @param args
*/
public static void main(String[] args)
{
TextFrame frame = new TextFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
class TextFrame extends JFrame
{
public TextFrame()
{
setTitle("考試題目");
setBounds(300,300,200,120);
TextPanel panel = new TextPanel();
add(panel);
}
}
class TextPanel extends JPanel
{
private JRadioButton r1,r2;
public TextPanel()
{
//實(shí)例化單選按鈕
r1 = new JRadioButton("男");
r2 = new JRadioButton("女");
JPanel p = new JPanel();
p.setBorder(BorderFactory.createTitledBorder("請(qǐng)選擇性別"));
p.add(r1);
p.add(r2);
ButtonGroup bg = new ButtonGroup();
//將需要?jiǎng)澐譃橐唤M的單選按鈕對(duì)象添加到按鈕組(注意只是邏輯上添加 和界面沒(méi)有關(guān)系)
bg.add(r1);
bg.add(r2);
add(p);
}
}
首先:采用什么技術(shù)實(shí)現(xiàn)
java語(yǔ)言可以使用awt 和swing等技術(shù)實(shí)現(xiàn)圖形界面
推薦使用Swing,因?yàn)镾wing比AWT更專(zhuān)業(yè),更漂亮,組件更豐富,功能更強(qiáng)大。
2. ??其次:分析采用什么布局
邊界布局BorderLayout,配合表格布局GridLayout,既簡(jiǎn)單又美觀
3. ??最后:分析需求中需要用的組件
學(xué)生姓名 學(xué)號(hào) ?顯示信息 需要用到文本框JTextField
單選按鈕 需要用到組件?JRadioButton
復(fù)選框 ? ?需要用到組件?JCheckBox
組合框 ? ?需要用到組件?JComboBox
圖片效果
參考代碼如下
//導(dǎo)入所需要的包
import?java.awt.event.*;
import?javax.swing.border.*;
import?javax.swing.*;
import?java.awt.*;
public?class?ClassFrame?extends?JFrame?{//?寫(xiě)一個(gè)類(lèi)繼承自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?JComboBoxString?t1,?t2,?t3;
public?static?void?main(String[]?args)?{
EventQueue.invokeLater(new?Runnable()?{
public?void?run()?{
try?{
ClassFrame?frame?=?new?ClassFrame();//?創(chuàng)建一個(gè)窗口實(shí)例
frame.setVisible(true);//?讓該窗口實(shí)例可見(jiàn)
}?catch?(Exception?e)?{
e.printStackTrace();
}
}
});
}
/**
?*?窗口屬性的設(shè)置,內(nèi)部組件的初始化
?*/
public?ClassFrame()?{
setTitle("選課ing...");//標(biāo)題
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//?設(shè)置關(guān)閉是退出JVM
setSize(450,?339);//?設(shè)置窗體大小
setLocationRelativeTo(null);//?窗體居中
contentPane?=?new?JPanel();//?內(nèi)容面板
contentPane.setBorder(new?EmptyBorder(5,?5,?5,?5));
contentPane.setLayout(new?BorderLayout(0,?0));//?設(shè)置布局
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("學(xué)號(hào)");
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);//設(shè)置單選按鈕中,默認(rèn)選擇的按鈕
rb2?=?new?JRadioButton("女");
panel_1.add(rb2);
ButtonGroup?bts?=?new?ButtonGroup();//單選按鈕需要加入同一個(gè)ButonGroup中才能生效
bts.add(rb1);
bts.add(rb2);
JPanel?panel_2?=?new?JPanel();
panel.add(panel_2);
cb1?=?new?JCheckBox("高等數(shù)學(xué)");
panel_2.add(cb1);
t1?=?new?JComboBoxString();
t1.setModel(new?DefaultComboBoxModelString(new?String[]?{?"林老師",?"趙老師",?"孫老師"?}));
panel_2.add(t1);
JPanel?panel_3?=?new?JPanel();
panel.add(panel_3);
cb2?=?new?JCheckBox("世界經(jīng)濟(jì)");
panel_3.add(cb2);
t2?=?new?JComboBoxString();
t2.setModel(new?DefaultComboBoxModelString(new?String[]?{?"張老師",?"劉老師"?}));
panel_3.add(t2);
JPanel?panel_4?=?new?JPanel();
panel.add(panel_4);
cb3?=?new?JCheckBox("音樂(lè)賞析");
panel_4.add(cb3);
t3?=?new?JComboBoxString();
t3.setModel(new?DefaultComboBoxModelString(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("學(xué)生選課界面");
labelTitle.setForeground(Color.DARK_GRAY);
labelTitle.setFont(new?Font("宋體",?Font.BOLD,?20));
panelNorth.add(labelTitle);
//給確定按鈕添加事件處理代碼
jbOk.addActionListener(new?ActionListener()?{
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());//把學(xué)生信息和選課信息放到文本框
}
});
//給重填按鈕?設(shè)置事件處理代碼
jbRest.addActionListener(new?ActionListener()?{
public?void?actionPerformed(ActionEvent?e)?{
tfName.setText("");
tfNum.setText("");
rb1.setSelected(true);
cb1.setSelected(false);
t1.setSelectedIndex(0);
cb2.setSelected(false);
t2.setSelectedIndex(0);
cb3.setSelected(false);
t3.setSelectedIndex(0);
allInfo.setText("");
}
});
}
}
/* Main.java
*
* Created on __DATE__, __TIME__
*/
import javax.swing.JOptionPane;
/**
*
* @author __USER__
*/
public class Main extends javax.swing.JFrame {
/** Creates new form Main */
public Main() {
initComponents();
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
//GEN-BEGIN:initComponents
// editor-fold defaultstate="collapsed" desc="Generated Code"
private void initComponents() {
jPanel1 = new javax.swing.JPanel(); //標(biāo)簽
jLabel1 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
jLabel3 = new javax.swing.JLabel();
jButton1 = new javax.swing.JButton(); //登錄按鈕
jButton2 = new javax.swing.JButton(); //
jTextField1 = new javax.swing.JTextField(); //文本框
jTextField2 = new javax.swing.JTextField();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); //關(guān)閉時(shí)的操作,即退出程序
setTitle("登錄界面"); //設(shè)置標(biāo)題:歡迎使用股票管理系統(tǒng)
setResizable(false); //設(shè)置窗口不可調(diào)節(jié)大小
jLabel1.setFont(new java.awt.Font("微軟雅黑", 0, 18)); //設(shè)置標(biāo)簽的字體
jLabel1
.setText("您好,請(qǐng)輸入信息");
jLabel2.setText("用戶(hù)名");
jLabel3.setText("用戶(hù)密碼");
jButton1.setText("登錄");
jButton1.addActionListener(new java.awt.event.ActionListener() { //采用匿名內(nèi)部類(lèi)來(lái)實(shí)現(xiàn)按鈕監(jiān)聽(tīng)功能
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
jButton2.setText("退出");
jButton2.addActionListener(new java.awt.event.ActionListener() { //同上
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton2ActionPerformed(evt);
}
});
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout( //層次布局管理器,下面n長(zhǎng)的代碼,就是設(shè)置位置,自己看吧,呵呵,這個(gè)必須的,就不多寫(xiě)了
jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout
.setHorizontalGroup(jPanel1Layout
.createParallelGroup(
javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(
javax.swing.GroupLayout.Alignment.TRAILING,
jPanel1Layout.createSequentialGroup()
.addContainerGap(159, Short.MAX_VALUE)
.addComponent(jLabel1).addGap(140, 140,
140))
.addGroup(
jPanel1Layout
.createSequentialGroup()
.addGap(110, 110, 110)
.addGroup(
jPanel1Layout
.createParallelGroup(
javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel2)
.addComponent(jLabel3))
.addGap(54, 54, 54)
.addGroup(
jPanel1Layout
.createParallelGroup(
javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(
jPanel1Layout
.createSequentialGroup()
.addComponent(
jTextField2,
javax.swing.GroupLayout.DEFAULT_SIZE,
191,
Short.MAX_VALUE)
.addGap(
112,
112,
112))
.addGroup(
jPanel1Layout
.createSequentialGroup()
.addComponent(
jTextField1,
javax.swing.GroupLayout.PREFERRED_SIZE,
191,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap())))
.addGroup(
jPanel1Layout
.createSequentialGroup()
.addGap(141, 141, 141)
.addComponent(
jButton1,
javax.swing.GroupLayout.PREFERRED_SIZE,
68,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(89, 89, 89)
.addComponent(
jButton2,
javax.swing.GroupLayout.PREFERRED_SIZE,
72,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(145, Short.MAX_VALUE)));
jPanel1Layout
.setVerticalGroup(jPanel1Layout
.createParallelGroup(
javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(
jPanel1Layout
.createSequentialGroup()
.addContainerGap()
.addComponent(jLabel1)
.addGap(55, 55, 55)
.addGroup(
jPanel1Layout
.createParallelGroup(
javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel2)
.addComponent(
jTextField1,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(41, 41, 41)
.addGroup(
jPanel1Layout
.createParallelGroup(
javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel3)
.addComponent(
jTextField2,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(43, 43, 43)
.addGroup(
jPanel1Layout
.createParallelGroup(
javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(
jButton1,
javax.swing.GroupLayout.PREFERRED_SIZE,
33,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(
jButton2,
javax.swing.GroupLayout.PREFERRED_SIZE,
33,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap(48, Short.MAX_VALUE)));
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(
getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(layout.createParallelGroup(
javax.swing.GroupLayout.Alignment.LEADING).addGroup(
layout.createSequentialGroup().addContainerGap().addComponent(
jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap()));
layout.setVerticalGroup(layout.createParallelGroup(
javax.swing.GroupLayout.Alignment.LEADING).addGroup(
layout.createSequentialGroup().addContainerGap().addComponent(
jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)));
pack();
setLocationRelativeTo(null); //居中
}// /editor-fold
//GEN-END:initComponents
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { //事件處理,不建議這樣做
// TODO add your handling code here:
String name = this.jTextField1.getText().trim(); //獲得用戶(hù)名,去空格
String password = this.jTextField2.getText().trim(); //獲得密碼,去空格
if (name.equals("admin") password.equals("123456")) { //如果符合條件.....其實(shí)這里應(yīng)該去和數(shù)據(jù)庫(kù)關(guān)聯(lián),這是死代碼
// Showinformation sf=new Showinformation(); //我估計(jì)是另外一個(gè)框架,就是登錄成功之后的框架
// sf.setVisible(true);
// sf.show(); //這個(gè)方法就直接秒殺,不用了,因?yàn)閟f.setVisible(true)已經(jīng)被調(diào)用了,這里就多次一舉了
} else { //用戶(hù)名或者密碼驗(yàn)證失敗
JOptionPane.showMessageDialog(this, "用戶(hù)名或者密碼錯(cuò)誤啦~", "提示", //提示框
JOptionPane.INFORMATION_MESSAGE);
this.jTextField1.setText(""); //清空輸入框
this.jTextField2.setText("");
}
}
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) { //事件處理,其實(shí)可以將jButton1ActionPerformed放在一起處理,只要獲得按鈕的標(biāo)簽內(nèi)容 (JButton)(evt.getSuorse()).getText()就做對(duì)比就ko了
// TODO add your handling code here:
System.exit(0);
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() { //好方法,呵呵使用該方式的原因是:awt是單線程模式的,所有awt的組件只能在(推薦方式)事件處理線程中訪問(wèn),從而保證組件狀態(tài)的可確定性。java核心編程技術(shù)中每個(gè)實(shí)例基本都用到了
public void run() {
new Main().setVisible(true);
}
});
}
//GEN-BEGIN:variables
// Variables declaration - do not modify
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton2;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JPanel jPanel1;
private javax.swing.JTextField jTextField1;
private javax.swing.JTextField jTextField2;}
// End of variables declaration//GEN-END:variables
你修改一下吧,從記事本獲得用戶(hù)名判斷一下就行了
一: 首先弄清題目的意思
A.需要的主要組件列表:
1. ?創(chuàng)建一個(gè)窗口,窗口標(biāo)題叫Information
2. ?3個(gè)標(biāo)簽, 用于顯示文字 Name Number Class
3. ?3個(gè)文本框, 用于填寫(xiě)信息
4. ?1個(gè)按鈕, ?文字是確認(rèn)
5. ?1個(gè)文本域
B.業(yè)務(wù)邏輯
1. 當(dāng)點(diǎn)擊按鈕確認(rèn)的時(shí)候, 把 文本框的信息顯示到文本域
C.設(shè)計(jì)的主要技術(shù)
JLabel , JButton, JTextField ...等, 都是swing的組件 , ?所以應(yīng)該使用swing進(jìn)行創(chuàng)建
二: ?確定使用的布局
swing雖然重寫(xiě)了大部分的組件, 但是布局, 依舊沿襲awt技術(shù)
分析圖片上的布局:
至少有2種方法可以實(shí)現(xiàn),?
方法一: 絕對(duì)布局 , 優(yōu)點(diǎn): ?配合可視化GUI拖曳, 可以完美的實(shí)現(xiàn)圖上的組件的位置
但是缺點(diǎn)也是致命的, 不同的操作系統(tǒng)平臺(tái)下, 可能會(huì)出現(xiàn)位置的移動(dòng),
只適合開(kāi)發(fā)平臺(tái), 移植效果差 . ?所以不推薦使用
方法二: 靈活的表格布局, 配合流式布局 , 所有操作系統(tǒng)下,顯示效果都比較統(tǒng)一.?
三: 效果圖
四: 參考代碼
import?java.awt.*;
import?java.awt.event.*;
import?javax.swing.*;
public?class?FrameDemo?extends?JFrame?{
//申明需要的組件
private?final?JTextField?jtf1,jtf2,jtf3;
private?final?JTextArea?jta;
public?FrameDemo()?{
setTitle("Information");//設(shè)置窗口標(biāo)題
setSize(320,?360);//設(shè)置窗口大小
setLocationRelativeTo(null);//設(shè)置窗口居中
setDefaultCloseOperation(EXIT_ON_CLOSE);//設(shè)置關(guān)閉時(shí)退出虛擬機(jī)
getContentPane().setLayout(new?FlowLayout());//設(shè)置窗口布局為流式布局
JPanel?jp?=?new?JPanel(new?GridLayout(4,?2));//設(shè)置jp面板為表格布局4行2列
//第一行
JPanel?jp01?=?new?JPanel();
JLabel?jl1?=?new?JLabel("Name:");
jp01.add(jl1);
JPanel?jp1?=?new?JPanel();
jtf1?=?new?JTextField(8);
jp1.add(jtf1);
//第二行
JPanel?jp02?=?new?JPanel();
JLabel?jl2?=?new?JLabel("Number:");
jp02.add(jl2);
JPanel?jp2?=?new?JPanel();
jtf2?=?new?JTextField(8);
jp2.add(jtf2);
//第三行
JPanel?jp03?=?new?JPanel();
JLabel?jl3?=?new?JLabel("Class:");
jp03.add(jl3);
JPanel?jp3?=?new?JPanel();
jtf3?=?new?JTextField(8);
jp3.add(jtf3);
//第四行
JPanel?jp04?=?new?JPanel();
JLabel?jl4?=?new?JLabel("");
jp04.add(jl4);
JPanel?jp4?=?new?JPanel();
JButton?jb?=?new?JButton("確認(rèn)");
jp4.add(jb);
jp.add(jp01);
jp.add(jp1);
jp.add(jp02);
jp.add(jp2);
jp.add(jp03);
jp.add(jp3);
jp.add(jp04);
jp.add(jp4);
getContentPane().add(jp);
jta?=?new?JTextArea();
jta.setColumns(20);//設(shè)置文本域的大小
jta.setEditable(false);//設(shè)置文本域不可編輯
jta.setBackground(jp.getBackground());//設(shè)置文本域的背景色和面板一樣
getContentPane().add(jta);
jb.addActionListener(new?ActionListener()?{//給按鈕添加事件
public?void?actionPerformed(ActionEvent?e)?{//點(diǎn)擊按鈕,顯示信息到文本域
String?name?=?jtf1.getText();
String?number?=?jtf2.getText();
String?clazz?=?jtf3.getText();
jta.setText("You?name?is?"+name+"?number?is?"+number+"?class?is?"+clazz);
}
});
}
public?static?void?main(String[]?args)?{
new?FrameDemo().setVisible(true);//創(chuàng)建窗口,被設(shè)置為可見(jiàn)
}
}
五: 拓展
雖然圖形界面的實(shí)現(xiàn)方法是多樣的, ?我們一定要根據(jù)具體情況, 選擇一個(gè)比較優(yōu)化的 合理的, 符合業(yè)務(wù)邏輯的實(shí)現(xiàn)方法
可以利用標(biāo)簽組件來(lái)設(shè)置。
具體方法如下:
利用標(biāo)簽組件來(lái)設(shè)置,具體代碼如下:
JPanelpnlMain=new JPanel(); //創(chuàng)建面板pnlMain。
getContentPane().add(pnlMain); //將pnlMain設(shè)置為主面板。
Iconi=new ImageIcon("背景.jpg"); /*用源圖片“背景.jpg”構(gòu)造一個(gè)ImageIcon對(duì)象i,需要注意如果圖片的路徑使用的是相對(duì)路徑,則圖片文件必須放在類(lèi)文件所在文件夾或項(xiàng)目的根文件夾中,否則圖片的路徑必須用絕對(duì)路徑。*/
JLabellblLogo = new JLabel(i); //用指定的圖片構(gòu)造標(biāo)簽對(duì)象lb
this.getLayeredPane().add(lb, new Integer(Integer.MIN_VALUE));
//把標(biāo)簽放在第二層JlayerPane上。
lb.setBounds(0, 0,ii.getIconWidth(),i.getIconHeight());
//設(shè)置標(biāo)簽的尺寸,即背景圖象的大小。
getConentPane().setOpaque(false); /*把內(nèi)容面板設(shè)置為透明,這樣整個(gè)框架的背景就不再是內(nèi)容面板的背景色,而是第二層中標(biāo)簽的圖像。*/
pnlMain.add(lb); //將標(biāo)簽添加到主面板pnlMain中。
好像是作業(yè), 源代碼發(fā)給你參考, ?注意學(xué)習(xí)下代碼. ?了解下布局 和按鈕的工作原理
參考代碼
import?java.awt.*;
import?java.awt.event.*;
public?class?MyRandomFrame?extends?Frame?implements?ActionListener?{
private?final?TextField?tf1;
private?final?TextField?tf2;
private?final?TextField?tf3;
public?static?void?main(String[]?args)?{
new?MyRandomFrame().setVisible(true);
}
public?MyRandomFrame()?{
setSize(600,?100);
setLocationRelativeTo(null);
setTitle("學(xué)號(hào):XXXXX??姓名:張三");
Button?but1?=?new?Button("獲取1~100之間的隨機(jī)數(shù)");
but1.setActionCommand("隨即");
but1.addActionListener(this);
Label?label1?=?new?Label("第一個(gè)數(shù):");
tf1?=?new?TextField(5);
Label?label2?=?new?Label("第二個(gè)數(shù):");
tf2?=?new?TextField(5);
Button?but2?=?new?Button("求和");
but2.setActionCommand("求和");
but2.addActionListener(this);
tf3?=?new?TextField(5);
setLayout(new?FlowLayout());
add(but1);
add(label1);
add(tf1);
add(label2);
add(tf2);
add(but2);
add(tf3);
addWindowListener(new?WindowAdapter()?{//?關(guān)閉窗口
@Override
public?void?windowClosing(WindowEvent?e)?{
System.exit(0);
}
});
}
@Override
public?void?actionPerformed(ActionEvent?e)?{
String?command?=?e.getActionCommand();
if?(command.equals("隨即"))?{
int?a?=?(int)?(Math.random()?*?100);
int?b?=?(int)?(Math.random()?*?100);
tf1.setText(String.valueOf(a));
tf2.setText(String.valueOf(b));
}?else?if?(command.equals("求和"))?{
int?x?=?Integer.parseInt(tf1.getText());
int?y?=?Integer.parseInt(tf2.getText());
tf3.setText(String.valueOf((x?+?y)));
}
}
}
網(wǎng)頁(yè)題目:java界面設(shè)計(jì)代碼 javaweb界面設(shè)計(jì)
文章轉(zhuǎn)載:http://muchs.cn/article22/hgiojc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營(yíng)銷(xiāo)、網(wǎng)站策劃、域名注冊(cè)、App設(shè)計(jì)、網(wǎng)站收錄、外貿(mào)建站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)