1. java编程中,GUI界面的一般框架有什么希望大神给写个程序实例,程序内容包括布局的应用,多个
java GUI一般,通过AWT,SWING 实现
其余比较流行的是SWT,但是它不是官方库, 并且旦核不能跨平台
//注意:
Swing, 所以很多不涉及界面组件的一些类比如布局 等Swing也可以使用
但是组件,最好不要混用, 容易出现一些组件叠加,等显示错误 比如JButton TextField等混用
//参考代码
下面使用Swing组件来实哗告现
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
//本类实现了ActionListener接口.一个ActionListener可以响应JMenuItem和JButton的动作
//本类实现FocusListener接口,一个FocusListener可以响应JTextField,JButton等
//JButton响应多个事件接口
,FocusListener{
privateJTextFieldjtf1;
privateJTextFieldjtf2;
privateJTextFieldjtf3;
privateJButtonjb1;
publicMyGuiFrame(){
//----------窗口属性乱迟明的设置----------
setTitle("窗口应用程序");//窗口标题
setSize(380,120);//窗口大小
setLocationRelativeTo(null);//窗口居于屏幕中央
setDefaultCloseOperation(EXIT_ON_CLOSE);//点击关闭窗口后退出jvm虚拟机
getContentPane().setLayout(newBorderLayout(5,3));//边界布局,水平间距5,垂直间距3
//菜单栏组件初始化
initMenu();
//主要面板的初始化
initPanel();
}
privatevoidinitPanel(){
JPaneljp=newJPanel(newFlowLayout(FlowLayout.CENTER));//流式布局
jtf1=newJTextField(8);
jtf1.addFocusListener(this);//添加焦点响应
JLabeljl=newJLabel("+");
jtf2=newJTextField(8);
jtf2.addFocusListener(this);
jb1=newJButton("=");
jb1.addActionListener(this);//添加动作响应
jb1.addFocusListener(this);//添加焦点响应
jtf3=newJTextField(8);
jtf3.setEditable(false);
jp.add(jtf1);
jp.add(jl);
jp.add(jtf2);
jp.add(jb1);
jp.add(jtf3);
getContentPane().add(jp,BorderLayout.CENTER);
}
privatevoidinitMenu(){//菜单栏的初始化和设置
JMenuBarjmb=newJMenuBar();
JMenujm1=newJMenu("系统");
JMenuItemjmi101=newJMenuItem("退出");
jmi101.addActionListener(this);//添加动作响应
JMenujm2=newJMenu("帮助");
JMenuItemjmi201=newJMenuItem("功能说明");
jmi201.addActionListener(this);
jm1.add(jmi101);
jm2.add(jmi201);
jmb.add(jm1);
jmb.add(jm2);
setJMenuBar(jmb);//设置菜单栏
}
//main方法,创建对象窗口,并且设置可见
publicstaticvoidmain(String[]args){
newMyGuiFrame().setVisible(true);
}
//动作响应处理
publicvoidactionPerformed(ActionEvente){
Stringcmd=e.getActionCommand();//根据命令来区分不同的操作
if(cmd.equals("退出")){
System.exit(0);
}
if(cmd.equals("功能说明")){
JOptionPane.showMessageDialog(this,"加法");
}
if(cmd.equals("=")){
Strings1=jtf1.getText().trim();
Strings2=jtf2.getText().trim();
if(s1.equals("")){
s1="0";
}
if(s2.equals("")){
s2="0";
}
doublenum1=Double.parseDouble(s1);//从字符串转小数
doublenum2=Double.parseDouble(s2);
jtf3.setText((num1+num2)+"");//数字类型转字符串类型
}
}
//焦点响应处理
publicvoidfocusGained(FocusEvente){//获得焦点
JComponentcmp=(JComponent)e.getComponent();//根据事件来源组件来区分不同的操作
if(cmp==jtf1||cmp==jtf2){
cmp.setBorder(BorderFactory.createLineBorder(Color.BLUE));//设置边框
}
if(cmp==jb1){
jb1.setForeground(Color.RED);//设置文字颜色
}
}
publicvoidfocusLost(FocusEvente){//失去焦点
JComponentcmp=(JComponent)e.getComponent();
if(cmp==jtf1||cmp==jtf2){
cmp.setBorder(BorderFactory.createLineBorder(Color.GRAY));
}
if(cmp==jb1){
jb1.setForeground(Color.BLACK);
}
}
}
运行效果如图
2. 用JAVA编写一个GUI记事本程序,实现文本的输入,保存,修改,打开操作
代码如下:
importjava.io.*;
importjava.awt.*;
importjava.awt.event.*;
publicclassjtxtfm{
publicstaticvoidmain(Stringargs[]){
jtxtfrmfm=newjtxtfrm();
}
}
{
FileDialogop,sv;
Buttonbtn1,btn2,btn3;
TextAreatarea;
jtxtfrm(){
super("读写文件");
setLayout(null);
setBackground(Color.cyan);
setSize(600,300);
setVisible(true);
btn1=newButton("打开");
btn2=newButton("保存");
btn3=newButton("关闭");
tarea=newTextArea("");
add(btn1);add(btn2);add(btn3);add(tarea);
tarea.setBounds(30,50,460,220);
btn1.setBounds(520,60,50,30);
btn2.setBounds(520,120,50,30);
btn3.setBounds(520,180,50,30);
op=newFileDialog(this,"打开",FileDialog.LOAD);
sv=newFileDialog(this,"保存",FileDialog.SAVE);
btn1.addActionListener(this);
btn2.addActionListener(this);
btn3.addActionListener(this);
addWindowListener(
newWindowAdapter(){
publicvoidwindowClosing(WindowEvente){
setVisible(false);
System.exit(0);
}
}
);
}
publicvoidactionPerformed(ActionEvente){
if(e.getSource()==btn1){
Stringstr;
op.setVisible(true);
try{
Filef1=newFile(op.getDirectory(),op.getFile());
FileReaderfr=newFileReader(f1);
BufferedReaderbr=newBufferedReader(fr);
tarea.setText("");
while((str=br.readLine())!=null)tarea.append(str+' ');
fr.close();
}
catch(Exceptione1)
{}
}
if(e.getSource()==btn2){
sv.setVisible(true);
try{
Filef1=newFile(sv.getDirectory(),sv.getFile());
FileWriterfw=newFileWriter(f1);
BufferedWriterbw=newBufferedWriter(fw);
Stringgt=tarea.getText();
bw.write(gt,0,gt.length());
bw.flush();
fw.close();
}
catch(Exceptione2)
{}
}
if(e.getSource()==btn3){
System.exit(0);
}
}
}
效果图:
3. JAVA语言的GUI实例
GUI做的计算器,可以查考一下,组件、事件等
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Calculator extends JFrame{
private Container container;//框架
private JTextField tf;//定歼斗义文本框
private Panel panel;
private String cmd;
private double result;//运算结果
private boolean start;//运算开始判断
Calculator(){
super("计算器");
container = getContentPane();
container.setLayout(new BorderLayout());
//添加文本框
tf = new JTextField("0.0");
container.add(tf,BorderLayout.NORTH);
tf.setHorizontalAlignment(JTextField.RIGHT);
tf.setEditable(false);
//嵌套容器
panel = new Panel();
container.add(panel);
start = true;
result = 0;
//最后坦肢运算等号
cmd = "=";
ActionListener insert = new InsertAction();
ActionListener command = new CommandAction();
/让改世/调用创建Button方法
addButton("1",insert);
addButton("2",insert);
addButton("3",insert);
addButton("0",insert);
addButton("*",command);
addButton("Back",insert);
addButton("4",insert);
addButton("5",insert);
addButton("6",insert);
addButton("+",command);
addButton("/",command);
addButton("Clear",insert);
addButton("7",insert);
addButton("8",insert);
addButton("9",insert);
addButton("-",command);
addButton(".",insert);
addButton("=",command);
setSize(400,200);
}
private void addButton(String str,ActionListener listener){
//添加Button方法(操作类型、注册监听器)
JButton button=new JButton(str);
button.addActionListener(listener);
panel.setLayout(new GridLayout(3,6));
panel.add(button);
}
private class InsertAction implements ActionListener{
//插入,insert
public void actionPerformed(ActionEvent event){
String input=event.getActionCommand();
if (start)
{
tf.setText("");
start=false;
}
if(input.equals("Back"))
{
String str=tf.getText();
if(str.length()>0)
tf.setText(str.substring(0,str.length()-1));
}
else if(input.equals("Clear"))
{
tf.setText("0");
start=true;
}
else
tf.setText(tf.getText()+input);
}
}
private class CommandAction implements ActionListener{
//计算,command
public void actionPerformed(ActionEvent e){
String command=e.getActionCommand();
if(start)
{
cmd=command;
}
else
{
calculate(Double.parseDouble(tf.getText()));
cmd=command;
start=true;
}
}
}
public void calculate(double x){
//加减乘除运算
if (cmd.equals("+")) result+=x;
else if (cmd.equals("-")) result-=x;
else if (cmd.equals("*")) result*=x;
else if (cmd.equals("/")) result/=x;
else if (cmd.equals("=")) result= x;
tf.setText(""+ result);
}
public static void main(String []args){
Calculator mycalculator=new Calculator();
mycalculator.setLocation(300,300);
mycalculator.setVisible(true);
}
}
4. 使用Java的GUI图形用户界面编程设计并编写一个计算器程序
进口的java.awt.BorderLayout;
进口java.awt.GridLayout中;
进口java.awt.event.ActionEvent;
进口java.awt.event.ActionListener;
进口的javax。 swing.JButton;
进口javax.swing.JFrame中;
进口javax.swing.JPanel;
进口javax.swing.JTextField中;
/ /暂时不考虑这个问题甚至添加
/ /点的第二个操作点的操作员点运算符点=结果
公共类计算器实现的ActionListener {
> JTextField的JTF =新的JTextField(10);
私人布尔追加= FALSE;
私人字符串OP1 =“0”;
私人字符串运算符=“+”;
@覆盖
公共无效的actionPerformed(ActionEvent的E){
字符串COMN = e.getActionCommand();。!
/ /处理数字
如果(“0123456789”的indexOf(COMN)= -1){
如果(追加){/ /追加
字符串温度= jtf.getText() ;
jtf.setText(温度+ COMN);
}其他{/ /替换
jtf.setText(COMN);
追加= TRUE;
/ /处理运营商
否则,如果(“+ - * /”的indexOf(COMN)= -1){
OP1 = JTF。的getText();
运算符= COMN;
追加= FALSE;
的} else if(“=”的indexOf(COMN)= -1。){
字符串OP2 = jtf.getText();
双D1 = Double.parseDouble(OP1);
双D2 = Double.parseDouble(OP2);
如果(“+”等于(操作者)。){
D1 = D1 + D2;
}否则,如果(“ - ”等于(操作员)。){
D1 = D1 - D2;
}否则,如果(“*”的equals(操作员)。){
D1 = D1 * D2;
的} else if(“/”等于(操作者)。){
D1 = D1 / D2;
jtf.setText(D1 +“”);
追加= FALSE;
}否则,如果(等于(COMN)“。”){
字符串温度= jtf.getText();
如果(temp.indexOf(“;”)== -1){
jtf.setText(温度+“。”);
追加= TRUE;
否则,如果(“+ / - ”的equals(COMN)){
字符串温度= jtf.getText();
如果(temp.startsWith(“-1”)){
JTF。的setText(temp.substring(1));
}其他{
jtf.setText(“ - ”+温度);
否则,如果(“退格”。等于(COMN)){
字符串温度= jtf.getText();
如果(temp.length()> 0){
jtf.setText(temp.substring(0,temp.length() - 1)); ..
}
的} else if(“CE”等于(COMN)| |“C”等于(COMN)){
jtf.setText(“0”);
追加= FALSE;
公众计算器(){
JFrame的JF =新的JFrame(“计算器”);
jf.add(JTF,BorderLayout.NORTH);
字串[] S1 = {“退格”,“CE”,“C”,“+”,“7”,“8”,“9”,“/”,“4”,
“5”,“6”,“*”,“1”,“2”,“3”,“ - ”,“0”,“+ / - ”,“”,。 “=”};
的JPanel JP =新的JPanel();
jf.add(JP,使用BorderLayout.CENTER);
网格布局GL =新的网格布局(5,4); jp.setLayout(GL);
JButton的[] JB =新的JButton [s1.length];
为(int i = 0;我<s1.length,我+ +){
JB [我] =新的JButton(S1由[i]);
jp.add(JB由[i]);。
JB [I] addActionListener方法,(这);
} jf.add(JP);
jtf.setEditable(假);
jf.setLocation(400,300);
jf.pack();
jf.setResizable(假);/ /设置窗口不可改变
jf.setDefaultCloseOperation(jf.EXIT_ON_CLOSE);
jf.setVisible(真);
公共静态无效的主要(字串[] args){
新的计算器();
这个函数比较简单,不知道能不能满足要求