「java窗口功能」java窗口实现

博主:adminadmin 2022-12-19 13:12:08 69

今天给各位分享java窗口功能的知识,其中也会对java窗口实现进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

用java做一个窗口

java做窗口的话,需要用swing技术,之后创建JFrame 等组件,即可完成窗口创建工作。

package inter.frame;import java.awt.BorderLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;import javax.swing.JFrame;

import javax.swing.JMenu;

import javax.swing.JMenuBar;

import javax.swing.JMenuItem;

import javax.swing.JOptionPane;public class MenuTest { /**

* @param args

*/

JFrame frame; //定义一个窗口架构

JMenuBar mb;//定义窗口的菜单工具栏

JMenu m; //定义菜单

JMenuItem mi1;//定义菜单的内容

JMenuItem mi2; //定义菜单的内容

public MenuTest() {

initFrame();

initAction();

}

public void initFrame() {

frame = new JFrame();

mb = new JMenuBar();

m = new JMenu("学生查询");

mi1 = new JMenuItem("确认");

mi2 = new JMenuItem("取消"); m.add(mi1);

m.add(mi2);

mb.add(m);

frame.add(mb, BorderLayout.NORTH);

frame.setSize(300, 300); //设置窗口大小

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置退出时关闭窗口

frame.setVisible(true);//设置窗口可见

} public void initAction() {

mi1.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

// 具体实现代码根据实际要求填写

System.out.println("click");

JOptionPane.showMessageDialog(null, "你点击了确定按钮");

}

});

mi2.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

// 具体实现代码根据实际要求填写

JOptionPane.showMessageDialog(null, "你点击了取消按钮");

}

});

} public static void main(String[] args) {

new MenuTest();//执行菜单创建

}}

怎样用Java编写一个整型计算器窗口并实现他的功能

给你个现成的,直接编译运行,请采纳

import java.awt.BorderLayout;

import java.awt.Color;

import java.awt.GridLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JPanel;

import javax.swing.JTextField;

/**

 * 一个计算器,与Windows附件自带计算器的标准版功能、界面相仿。 但还不支持键盘操作。

 */

public class JCalculator extends JFrame implements ActionListener {

/** 计算器上的键的显示名字 */

private final String[] KEYS = { "7", "8", "9", "/", "sqrt", "4", "5", "6",

"*", "%", "1", "2", "3", "-", "1/x", "0", "+/-", ".", "+", "=" };

/** 计算器上的功能键的显示名字 */

private final String[] COMMAND = { "Backspace", "CE", "C" };

/** 计算器左边的M的显示名字 */

private final String[] M = { " ", "MC", "MR", "MS", "M+" };

/** 计算器上键的按钮 */

private JButton keys[] = new JButton[KEYS.length];

/** 计算器上的功能键的按钮 */

private JButton commands[] = new JButton[COMMAND.length];

/** 计算器左边的M的按钮 */

private JButton m[] = new JButton[M.length];

/** 计算结果文本框 */

private JTextField resultText = new JTextField("0");

// 标志用户按的是否是整个表达式的第一个数字,或者是运算符后的第一个数字

private boolean firstDigit = true;

// 计算的中间结果。

private double resultNum = 0.0;

// 当前运算的运算符

private String operator = "=";

// 操作是否合法

private boolean operateValidFlag = true;

/**

 * 构造函数

 */

public JCalculator() {

super();

// 初始化计算器

init();

// 设置计算器的背景颜色

this.setBackground(Color.LIGHT_GRAY);

this.setTitle("计算器");

// 在屏幕(500, 300)坐标处显示计算器

this.setLocation(500, 300);

// 不许修改计算器的大小

this.setResizable(false);

// 使计算器中各组件大小合适

this.pack();

}

/**

 * 初始化计算器

 */

private void init() {

// 文本框中的内容采用右对齐方式

resultText.setHorizontalAlignment(JTextField.RIGHT);

// 不允许修改结果文本框

resultText.setEditable(false);

// 设置文本框背景颜色为白色

resultText.setBackground(Color.white);

// 初始化计算器上键的按钮,将键放在一个画板内

JPanel calckeysPanel = new JPanel();

// 用网格布局器,4行,5列的网格,网格之间的水平方向间隔为3个象素,垂直方向间隔为3个象素

calckeysPanel.setLayout(new GridLayout(4, 5, 3, 3));

for (int i = 0; i  KEYS.length; i++) {

keys[i] = new JButton(KEYS[i]);

calckeysPanel.add(keys[i]);

keys[i].setForeground(Color.blue);

}

// 运算符键用红色标示,其他键用蓝色表示

keys[3].setForeground(Color.red);

keys[8].setForeground(Color.red);

keys[13].setForeground(Color.red);

keys[18].setForeground(Color.red);

keys[19].setForeground(Color.red);

// 初始化功能键,都用红色标示。将功能键放在一个画板内

JPanel commandsPanel = new JPanel();

// 用网格布局器,1行,3列的网格,网格之间的水平方向间隔为3个象素,垂直方向间隔为3个象素

commandsPanel.setLayout(new GridLayout(1, 3, 3, 3));

for (int i = 0; i  COMMAND.length; i++) {

commands[i] = new JButton(COMMAND[i]);

commandsPanel.add(commands[i]);

commands[i].setForeground(Color.red);

}

// 初始化M键,用红色标示,将M键放在一个画板内

JPanel calmsPanel = new JPanel();

// 用网格布局管理器,5行,1列的网格,网格之间的水平方向间隔为3个象素,垂直方向间隔为3个象素

calmsPanel.setLayout(new GridLayout(5, 1, 3, 3));

for (int i = 0; i  M.length; i++) {

m[i] = new JButton(M[i]);

calmsPanel.add(m[i]);

m[i].setForeground(Color.red);

}

// 下面进行计算器的整体布局,将calckeys和command画板放在计算器的中部,

// 将文本框放在北部,将calms画板放在计算器的西部。

// 新建一个大的画板,将上面建立的command和calckeys画板放在该画板内

JPanel panel1 = new JPanel();

// 画板采用边界布局管理器,画板里组件之间的水平和垂直方向上间隔都为3象素

panel1.setLayout(new BorderLayout(3, 3));

panel1.add("North", commandsPanel);

panel1.add("West", calckeysPanel);

// 建立一个画板放文本框

JPanel top = new JPanel();

top.setLayout(new BorderLayout());

top.add("Center", resultText);

// 整体布局

getContentPane().setLayout(new BorderLayout(3, 5));

getContentPane().add("North", top);

getContentPane().add("Center", panel1);

getContentPane().add("West", calmsPanel);

// 为各按钮添加事件侦听器

// 都使用同一个事件侦听器,即本对象。本类的声明中有implements ActionListener

for (int i = 0; i  KEYS.length; i++) {

keys[i].addActionListener(this);

}

for (int i = 0; i  COMMAND.length; i++) {

commands[i].addActionListener(this);

}

for (int i = 0; i  M.length; i++) {

m[i].addActionListener(this);

}

}

/**

 * 处理事件

 */

public void actionPerformed(ActionEvent e) {

// 获取事件源的标签

String label = e.getActionCommand();

if (label.equals(COMMAND[0])) {

// 用户按了"Backspace"键

handleBackspace();

} else if (label.equals(COMMAND[1])) {

// 用户按了"CE"键

resultText.setText("0");

} else if (label.equals(COMMAND[2])) {

// 用户按了"C"键

handleC();

} else if ("0123456789.".indexOf(label) = 0) {

// 用户按了数字键或者小数点键

handleNumber(label);

// handlezero(zero);

} else {

// 用户按了运算符键

handleOperator(label);

}

}

/**

 * 处理Backspace键被按下的事件

 */

private void handleBackspace() {

String text = resultText.getText();

int i = text.length();

if (i  0) {

// 退格,将文本最后一个字符去掉

text = text.substring(0, i - 1);

if (text.length() == 0) {

// 如果文本没有了内容,则初始化计算器的各种值

resultText.setText("0");

firstDigit = true;

operator = "=";

} else {

// 显示新的文本

resultText.setText(text);

}

}

}

/**

 * 处理数字键被按下的事件

 * 

 * @param key

 */

private void handleNumber(String key) {

if (firstDigit) {

// 输入的第一个数字

resultText.setText(key);

} else if ((key.equals("."))  (resultText.getText().indexOf(".")  0)) {

// 输入的是小数点,并且之前没有小数点,则将小数点附在结果文本框的后面

resultText.setText(resultText.getText() + ".");

} else if (!key.equals(".")) {

// 如果输入的不是小数点,则将数字附在结果文本框的后面

resultText.setText(resultText.getText() + key);

}

// 以后输入的肯定不是第一个数字了

firstDigit = false;

}

/**

 * 处理C键被按下的事件

 */

private void handleC() {

// 初始化计算器的各种值

resultText.setText("0");

firstDigit = true;

operator = "=";

}

/**

 * 处理运算符键被按下的事件

 * 

 * @param key

 */

private void handleOperator(String key) {

if (operator.equals("/")) {

// 除法运算

// 如果当前结果文本框中的值等于0

if (getNumberFromText() == 0.0) {

// 操作不合法

operateValidFlag = false;

resultText.setText("除数不能为零");

} else {

resultNum /= getNumberFromText();

}

} else if (operator.equals("1/x")) {

// 倒数运算

if (resultNum == 0.0) {

// 操作不合法

operateValidFlag = false;

resultText.setText("零没有倒数");

} else {

resultNum = 1 / resultNum;

}

} else if (operator.equals("+")) {

// 加法运算

resultNum += getNumberFromText();

} else if (operator.equals("-")) {

// 减法运算

resultNum -= getNumberFromText();

} else if (operator.equals("*")) {

// 乘法运算

resultNum *= getNumberFromText();

} else if (operator.equals("sqrt")) {

// 平方根运算

resultNum = Math.sqrt(resultNum);

} else if (operator.equals("%")) {

// 百分号运算,除以100

resultNum = resultNum / 100;

} else if (operator.equals("+/-")) {

// 正数负数运算

resultNum = resultNum * (-1);

} else if (operator.equals("=")) {

// 赋值运算

resultNum = getNumberFromText();

}

if (operateValidFlag) {

// 双精度浮点数的运算

long t1;

double t2;

t1 = (long) resultNum;

t2 = resultNum - t1;

if (t2 == 0) {

resultText.setText(String.valueOf(t1));

} else {

resultText.setText(String.valueOf(resultNum));

}

}

// 运算符等于用户按的按钮

operator = key;

firstDigit = true;

operateValidFlag = true;

}

/**

 * 从结果文本框中获取数字

 * 

 * @return

 */

private double getNumberFromText() {

double result = 0;

try {

result = Double.valueOf(resultText.getText()).doubleValue();

} catch (NumberFormatException e) {

}

return result;

}

public static void main(String args[]) {

JCalculator JCalculator1 = new JCalculator();

JCalculator1.setVisible(true);

JCalculator1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

}

如何在java程序中,当点击一个按钮后,关闭当前窗口,开启一个新的窗口。

首先分析需要的GUI技术

java中一般使用swing 和awt技术来实现图形界面,Swing组件较多,功能比较强大,所以这里使用Swing组件来实现。窗口使用(JFrame),按钮使用(JButton)。

设想一个符合题目需求的场景

两个窗口关联并且跳转,最常见的场景就是登陆了。

登陆窗口,输入用户名和密码,如果成功就跳转到主窗口

核心逻辑,跳转窗口的关键代码

一般可以隐藏本窗口(setVisible(false);),显示新窗口来实现窗口的跳转。

但是隐藏窗口,会在后面浪费系统资源。

如果不再使用该窗口,应该彻底销毁(dispose();),释放系统资源

代码和注释

LoginFrame 类

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

//LoginFrame 登陆窗口  功能 实现用户登陆 ,如果成功就跳转

//LoginFrame 继承于窗口类, 并实现ActionListener接口

public class LoginFrame extends JFrame implements ActionListener {

// 申明需要的组件

JButton jb1, jb2;//按钮

JTextField jtf1;//文本框

JPasswordField jpf1;//密码框

public LoginFrame() {

// 窗口属性的设置

setTitle("登陆窗");// 窗口标题

setSize(300, 180);// 窗口大小

setLocationRelativeTo(null);// 窗口居中

setDefaultCloseOperation(EXIT_ON_CLOSE);// 关闭窗口则退出虚拟机

setLayout(new FlowLayout());// 设置布局流式布局

JPanel jp = new JPanel(new GridLayout(4, 1));// 设置面板为表格布局4行1列

// 第一行

JPanel jp1 = new JPanel();

JLabel jl1 = new JLabel("账号 ");

jtf1 = new JTextField(12);

jp1.add(jl1);

jp1.add(jtf1);

jp.add(jp1);

// 第二行

JPanel jp2 = new JPanel();

JLabel jl2 = new JLabel("密码 ");

jpf1 = new JPasswordField(12);

jp2.add(jl2);

jp2.add(jpf1);

jp.add(jp2);

// 第三行

JPanel jp3 = new JPanel();

jb1 = new JButton("登陆");

jb1.addActionListener(this);// 添加动作响应器

jb2 = new JButton("重置");

jb2.addActionListener(this);// 添加动作响应器

jp3.add(jb1);

jp3.add(jb2);

jp.add(jp3);

// 第四行

JPanel jp4 = new JPanel();

JLabel jl3 = new JLabel("提示: 账号 admin 密码 123");

jl3.setForeground(Color.DARK_GRAY);

jp4.add(jl3);

jp.add(jp4);

add(jp);

}

// 动作响应

public void actionPerformed(ActionEvent e) {

String cmd = e.getActionCommand();// 根据动作命令,来进行分别处理

if (cmd.equals("登陆")) {

String id = jtf1.getText();// 取得用户名

String key = new String(jpf1.getPassword());// 取得密码

if (id.equals("admin")  key.equals("123")) {// 判断是否登录成功

// 如果登录成功

setVisible(false);// 本窗口隐藏,

new MainFrame(id).setVisible(true);// 新窗口显示

dispose();//本窗口销毁,释放内存资源

} else {

//如果登录失败  弹出提示

JOptionPane.showMessageDialog(this, "用户名或者密码错误.", "通知", JOptionPane.ERROR_MESSAGE);

clearText();//清空文本框 密码框的输入

}

} else if (cmd.equals("重置")) {

clearText();

}

}

private void clearText() {//清空文本框, 密码框的输入

jtf1.setText("");

jpf1.setText("");

}

//main方法, 程序的入口

public static void main(String[] args) {

new LoginFrame().setVisible(true);//创建登录窗口,并可见

}

}

MainFrame类

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

public class MainFrame extends JFrame {

public MainFrame(String name) {

setTitle("主窗口");//标题

setSize(300, 260);//大小

setLocationRelativeTo(null);//居中

setDefaultCloseOperation(EXIT_ON_CLOSE);

JPanel jp = new JPanel();

JLabel jl1 = new JLabel("欢迎");

JLabel jl2 = new JLabel(name);

jl2.setForeground(Color.BLUE);//设置文本颜色

JLabel jl3 = new JLabel("使用系统.");

jp.add(jl1);

jp.add(jl2);

jp.add(jl3);

add(jp, BorderLayout.NORTH);

JTextArea jta = new JTextArea();

jta.setLineWrap(true);

jta.append("消息提示");

jta.append(" 消息!通知~!");

JScrollPane jsp = new JScrollPane(jta, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);

add(jsp);

JPanel jp2 = new JPanel();

JButton jb = new JButton("退出");

jb.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

System.exit(0);//退出

}

});

jp2.add(jb);

add(jp2,BorderLayout.SOUTH);

}

}

运行效果图

Java制作一个用户登录的窗口

Java用户登陆这块,主要还是类:

1,边界布局:BorderLayout。他主要分为五个布局,是JFrame(顶层容器),JDialog(创建对话框窗口的类)的默认布局方式。其最多容量为5个组件,超出5个得用其他的。设置方式为:BorderLayout.NORTH;BorderLayout.SOUTH;BorderLayout.CENTER;Borderlayout.CENTER;BorderLayout.LEFT;BorderLayout.RIGHT。

2,流式布局:FlowLayout。布局方式为从左到右,从上到下。是JPanel(轻量级容器)的默认面板布局。

3,网格布局:GridLayout。布局方式为行和列组成的网络。布局方法:setLayout(new

GridLayout(3,2,3,3));其中强两位数字表示三行两列,后两位表示行与行的间距为3,列与列的间距为3.

接着,就接触到JPanel面板。JPanel是非顶层容器,所以,一个界面只能由一个JFrame,但是可以有多个JPanel组件。其默认布局方式为流式布局。在JPanel这块,学到了用户登录界面的设计。从而接触到另外三个组件:文本框组件:JTextField;密码框组件:JPasswordField;标签组件:JLabel;复选框组件:JCheckBox;单选框组件:JRadioButton;按钮组件JButton。

怎么用java设计一个窗口,要求功能如下:

我这有个联系swing的界面大全,里面包含了常用的主件,可以直接用

package demo.synth;

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

import java.lang.reflect.InvocationTargetException;

import javax.swing.tree.*;

import javax.swing.event.*;

import javax.swing.border.*;

import javax.swing.plaf.metal.MetalLookAndFeel;

import javax.swing.plaf.synth.SynthLookAndFeel;

import javax.swing.table.*;

public class SwingTest extends JFrame {

/**

* 主模块,初始化所有子模块,并设置主框架的相关属性

*/

public SwingTest() {

// 初始化所有模块

MenuTest menuTest = new MenuTest();

LeftPanel leftPanel = new LeftPanel();

RightPanel rightPanel = new RightPanel();

BottomPanel bottomPanel = new BottomPanel();

CenterPanel centerPanel = new CenterPanel();

// 设置主框架的布局

Container c = this.getContentPane();

// c.setLayout(new BorderLayout());

this.setJMenuBar(menuTest);

c.add(leftPanel, BorderLayout.WEST);

c.add(rightPanel, BorderLayout.EAST);

c.add(centerPanel, BorderLayout.CENTER);

c.add(bottomPanel, BorderLayout.SOUTH);

// 利用无名内隐类,增加窗口事件

this.addWindowListener(new WindowAdapter() {

public void WindowClosing(WindowEvent e) {

// 释放资源,退出程序

dispose();

System.exit(0);

}

});

setSize(800, 600);

setTitle("* All Groupware Of Swing *");

// 隐藏frame的标题栏,此功暂时关闭,以方便使用window事件

// setUndecorated(true);

setLocation(200, 150);

this.setVisible(true);

}

// //////////////////////////////////////////////////////////////////////////

/**

* 菜单栏处理模块 JMenuBar --+ --JMenu--+ --JMenuItem --ActionListener

*

*/

class MenuTest extends JMenuBar {

private JDialog aboutDialog;

/**

* 菜单初始化操作

*/

public MenuTest() {

JMenu fileMenu = new JMenu("File");

JMenuItem exitMenuItem = new JMenuItem("Exit", KeyEvent.VK_E);

JMenuItem aboutMenuItem = new JMenuItem("About...", KeyEvent.VK_A);

fileMenu.add(exitMenuItem);

fileMenu.add(aboutMenuItem);

this.add(fileMenu);

aboutDialog = new JDialog();

initAboutDialog();

// 菜单事件

exitMenuItem.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

dispose();

System.exit(0);

}

});

aboutMenuItem.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

// "关于"对话框的处理

aboutDialog.setVisible(true);

}

});

}

/**

* 返回关于对话框

*/

public JDialog getAboutDialog() {

return aboutDialog;

}

/**

* 设置"关于"对话框的外观及响应事件,操作和JFrame一样都是在内容 框架上进行的

*/

public void initAboutDialog() {

aboutDialog.setTitle("About");

Container con = aboutDialog.getContentPane();

// Swing 中使用html语句

Icon icon = new ImageIcon("smile.gif");

JLabel aboutLabel = new JLabel("htmlbfont size=5"

+ "centerAll Groupware Of Swing !" + "brKasam.Huang",

icon, JLabel.CENTER);

// JLabel aboutLabel = new JLabel("Swing

// 组件大全简体版!",icon,JLabel.CENTER);

con.add(aboutLabel, BorderLayout.CENTER);

aboutDialog.setSize(450, 225);

aboutDialog.setLocation(300, 300);

aboutDialog.addWindowListener(new WindowAdapter() {

public void WindowClosing(WindowEvent e) {

dispose();

}

});

}

}

// //////////////////////////////////////////////////////////////////////////

/**

* 最左边模块,继承JPanel,初始化内容为JTree JPanel--+ --JTree

*/

class LeftPanel extends JPanel {

private int i = 0;

public LeftPanel() {

DefaultMutableTreeNode root = new DefaultMutableTreeNode("Root");

DefaultMutableTreeNode child = new DefaultMutableTreeNode("Child");

DefaultMutableTreeNode select = new DefaultMutableTreeNode("select");

DefaultMutableTreeNode child1 = new DefaultMutableTreeNode("" + i);

root.add(child);

root.add(select);

child.add(child1);

JTree tree = new JTree(root);

tree.getSelectionModel().setSelectionMode(

TreeSelectionModel.DISCONTIGUOUS_TREE_SELECTION);

// 每个节点的行高

tree.setRowHeight(20);

tree.addTreeSelectionListener(new TreeSelectionListener() {

public void valueChanged(TreeSelectionEvent e) {

// 内隐类不能直接引用外部类tree,1.外部变量可申明为final 2.新建外部类的对象

JTree tree = (JTree) e.getSource();

DefaultMutableTreeNode selectNode = (DefaultMutableTreeNode) tree

.getLastSelectedPathComponent();

i++;

selectNode.add(new DefaultMutableTreeNode("" + i));

// Object s = tree.getLastSelectedPathComponent();//

// getSelectedValue();

// JOptionPane.showMessageDialog(null, s + " is selected",

// "Message !", JOptionPane.YES_OPTION);

}

});

tree.setPreferredSize(new Dimension(100, 300));

// tree.setEnabled(true);

JScrollPane scrollPane = new JScrollPane(tree);

// scrollPane.setSize(100,350);

this.add(scrollPane);

}

}

// //////////////////////////////////////////////////////////////////////////

/**

* 最下面层模块,继承JPanel,初始化内容为进度条,并由定时器控制 JPanel--+ --JProcessBar --Timer

*/

class BottomPanel extends JPanel {

private JProgressBar pb;

public BottomPanel() {

pb = new JProgressBar();

pb.setPreferredSize(new Dimension(550, 20));

// 设置定时器,用来控制进度条的处理

Timer time = new Timer(1, new ActionListener() {

int counter = 0;

public void actionPerformed(ActionEvent e) {

counter++;

pb.setValue(counter);

Timer t = (Timer) e.getSource();

// 如果进度条达到最大值重新开发计数

if (counter == pb.getMaximum()) {

t.stop();

counter = 0;

t.start();

}

}

});

time.start();

pb.setStringPainted(true);

pb.setMinimum(0);

pb.setMaximum(1000);

pb.setBackground(Color.white);

pb.setForeground(Color.red);

this.add(pb);

}

/**

* 设置进度条的数据模型

*/

public void setProcessBar(BoundedRangeModel rangeModel) {

pb.setModel(rangeModel);

}

}

// //////////////////////////////////////////////////////////////////////////

/**

* 最右边模块,继承JPanel,初始化各种按钮 JPanel--+ --JButton --JToggleButton -- JList --

* JCombox --JCheckBox ....

*/

class RightPanel extends JPanel {

public RightPanel() {

this.setLayout(new GridLayout(8, 1));

// 初始化各种按钮

JCheckBox checkBox = new JCheckBox("CheckButton");

JButton button = new JButton("OpenFile");

button.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

JFileChooser file = new JFileChooser();

int result = file.showOpenDialog(new JPanel());

if (result == file.APPROVE_OPTION) {

String fileName = file.getSelectedFile().getName();

String dir = file.getCurrentDirectory().toString();

JOptionPane.showConfirmDialog(null,

dir + "" + fileName, "SelectFile",

JOptionPane.YES_OPTION);

}

}

});

JToggleButton toggleButton = new JToggleButton("RadioButton");

ButtonGroup buttonGroup = new ButtonGroup();

JRadioButton radioButton1 = new JRadioButton("RadioButton 1", false);

JRadioButton radioButton2 = new JRadioButton("RadioButton 2", false);

// 组合框的处理

JComboBox comboBox = new JComboBox();

comboBox.setToolTipText("ComboBox");

comboBox.addItem("程序员");

comboBox.addItem("分析员");

comboBox.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

JComboBox comboBox1 = (JComboBox) e.getSource();

comboBox1.addItem("程序员");

comboBox1.addItem("分析员");

}

});

// 列表框的处理

DefaultListModel litem = new DefaultListModel();

litem.addElement("SAT");

litem.addElement("SUN");

JList list = new JList(litem);

list.addListSelectionListener(new ListSelectionListener() {

public void valueChanged(ListSelectionEvent e) {

JList l = (JList) e.getSource();

Object s = l.getSelectedValue();

JOptionPane.showMessageDialog(null, s, "Message !",

JOptionPane.YES_OPTION);

}

});

// 增加按钮组

buttonGroup.add(radioButton1);

buttonGroup.add(radioButton2);

// 增加各种按钮到JPanel中显示

add(button);

add(toggleButton);

add(checkBox);

add(radioButton1);

add(radioButton2);

add(comboBox);

add(list);

this.setBorder(new EtchedBorder(EtchedBorder.LOWERED,

Color.LIGHT_GRAY, Color.blue));

}

}

// //////////////////////////////////////////////////////////////////////////

/**

* 中间层模块,继承JPanel,初始化页签,并在页签中设置文本区,表格, 文本区上下用分隔条分隔 JPanel--+ -JTabbedPane--+

* --Draw --JTable -JTextAreas -JText --JPopupMenu

*/

class CenterPanel extends JPanel {

public CenterPanel() {

JTabbedPane tab = new JTabbedPane(JTabbedPane.TOP);

JTextField textField = new JTextField(

"Text Area,Click Text Button Will select file !");

textField.setActionCommand("textField");

JTextPane textPane = new JTextPane();

textPane.setCursor(new Cursor(Cursor.TEXT_CURSOR));

textPane.setText("Editor,Click the TextArea .");

// textPane.setForeground(new ImageIcon(""));

textPane.addMouseListener(new MouseAdapter() {

public void mousePressed(MouseEvent e) {

JTextPane textPane = (JTextPane) e.getSource();

textPane.setText("Editor click command success!");

// textField.setText(""+textPane.getText());

}

});

/*

* UpperCaseDocument doc = new Document();

* textField.setDocumentsetDocument(doc);

* doc.addDocumentListener(new DocumentListener() { public void

* changedUpdate(DocumentEvent e){} public void

* removeUpdate(DocumentEvent e){} public void

* insertUpdate(DocumentEvent e) { Document text =

* (Document)e.getDocument(); text.setText("Copy Success !"); } });

*/

JSplitPane splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT,

textField, textPane);

JTable table = new JTable(10, 10);

// UIManager.get("Table.focusCellForeground");

// table.showHorizontalLines(true);

// table.showVerticalLines(true);

// table.setGridColor(Color.blue);

JPanel pane = new JPanel();

pane.add(table.getTableHeader(), BorderLayout.NORTH);

pane.add(table);

tab.addTab("Text Action", splitPane);

// tab.addTab(table.getTableHeader());

tab.addTab("Table Action", pane);

tab.setPreferredSize(new Dimension(500, 600));

this.add(tab);

this.setEnabled(true);

}

}

public static void main(String args[]){

new SwingTest();

}

}

java窗口功能的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java窗口实现、java窗口功能的信息别忘了在本站进行查找喔。

The End

发布于:2022-12-19,除非注明,否则均为首码项目网原创文章,转载请注明出处。