java编程中,GUI界面的一般框架有什么??希望大神给写个程序实例,程序内容包括布局的应用,多个

java编程中,GUI界面的一般框架有什么??希望大神给写个程序实例,程序内容包括布局的应用,多个事件源注册同一个事件监听器(尽量用button),以及一个组件上注册多个... java编程中,GUI界面的一般框架有什么??希望大神给写个程序实例,程序内容包括布局的应用,多个事件源注册同一个事件监听器(尽量用button),以及一个组件上注册多个事件监听者的。只需要用Jbutton和JmenuItem以及Jtextfield。 展开
 我来答
雪飞潇潇
推荐于2017-12-16 · TA获得超过6275个赞
知道大有可为答主
回答量:1968
采纳率:91%
帮助的人:869万
展开全部

java   GUI一般,通过AWT,SWING 实现

其余比较流行的是SWT,但是它不是官方库, 并且不能跨平台

//注意:

Swing, 所以很多不涉及界面组件的一些类比如布局 等Swing也可以使用

但是组件,最好不要混用, 容易出现一些组件叠加,等显示错误 比如JButton TextField等混用


//参考代码

下面使用Swing组件来实现

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

//本类实现了ActionListener接口. 一个ActionListener可以响应JMenuItem 和JButton的动作
//本类实现FocusListener接口,一个FocusListener可以响应JTextField,JButton等
//JButton响应多个事件接口
public class MyGuiFrame extends JFrame implements ActionListener, FocusListener {
private JTextField jtf1;
private JTextField jtf2;
private JTextField jtf3;
private JButton jb1;

public MyGuiFrame() {
// ----------窗口属性的设置----------
setTitle("窗口应用程序");// 窗口标题
setSize(380, 120);// 窗口大小
setLocationRelativeTo(null);// 窗口居于屏幕中央
setDefaultCloseOperation(EXIT_ON_CLOSE);// 点击关闭窗口后退出jvm虚拟机
getContentPane().setLayout(new BorderLayout(5, 3));// 边界布局,水平间距5,垂直间距3

// 菜单栏组件初始化
initMenu();

// 主要面板的初始化
initPanel();
}

private void initPanel() {
JPanel jp = new JPanel(new FlowLayout(FlowLayout.CENTER));// 流式布局
jtf1 = new JTextField(8);
jtf1.addFocusListener(this);// 添加焦点响应
JLabel jl = new JLabel("+");
jtf2 = new JTextField(8);
jtf2.addFocusListener(this);
jb1 = new JButton("=");
jb1.addActionListener(this);// 添加动作响应
jb1.addFocusListener(this);// 添加焦点响应

jtf3 = new JTextField(8);
jtf3.setEditable(false);

jp.add(jtf1);
jp.add(jl);
jp.add(jtf2);
jp.add(jb1);
jp.add(jtf3);
getContentPane().add(jp, BorderLayout.CENTER);

}

private void initMenu() {// 菜单栏的初始化和 设置
JMenuBar jmb = new JMenuBar();
JMenu jm1 = new JMenu("系统");
JMenuItem jmi101 = new JMenuItem("退出");
jmi101.addActionListener(this);// 添加动作响应
JMenu jm2 = new JMenu("帮助");
JMenuItem jmi201 = new JMenuItem("功能说明");
jmi201.addActionListener(this);
jm1.add(jmi101);
jm2.add(jmi201);
jmb.add(jm1);
jmb.add(jm2);
setJMenuBar(jmb);//设置菜单栏
}

// main方法, 创建对象窗口, 并且设置可见
public static void main(String[] args) {
new MyGuiFrame().setVisible(true);
}

// 动作响应处理
public void actionPerformed(ActionEvent e) {
String cmd = e.getActionCommand();//根据命令来区分不同的操作
if (cmd.equals("退出")) {
System.exit(0);
}
if (cmd.equals("功能说明")) {
JOptionPane.showMessageDialog(this, "加法");
}
if (cmd.equals("=")) {

String s1 = jtf1.getText().trim();
String s2 = jtf2.getText().trim();
if(s1.equals("")){
s1="0";
}
if(s2.equals("")){
s2="0";
}
double num1 = Double.parseDouble(s1);//从字符串转小数
double num2 = Double.parseDouble(s2);
jtf3.setText((num1 + num2) + "");// 数字类型转字符串类型

}
}

// 焦点响应处理
public void focusGained(FocusEvent e) {//获得焦点
JComponent cmp = (JComponent) e.getComponent();//根据事件来源组件来区分不同的操作
if (cmp == jtf1 || cmp == jtf2) {
cmp.setBorder(BorderFactory.createLineBorder(Color.BLUE));// 设置边框
}
if (cmp == jb1) {
jb1.setForeground(Color.RED);//设置文字颜色
}
}

public void focusLost(FocusEvent e) {//失去焦点
JComponent cmp = (JComponent) e.getComponent();
if (cmp == jtf1 || cmp == jtf2) {
cmp.setBorder(BorderFactory.createLineBorder(Color.GRAY));
}
if (cmp == jb1) {
jb1.setForeground(Color.BLACK);
}
}

}


运行效果如图

更多追问追答
追答
我发的也是程序和代码。但是手机知道只显示图片。代码需要在电脑网页知道上才能显示
并且你追问我的内容电脑网页版知道也不显示。所以你还是登陆电脑网页版知道吧。
百度网友6b2725e
2016-01-18 · 贡献了超过281个回答
知道答主
回答量:281
采纳率:0%
帮助的人:45.3万
展开全部
不懂
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式