📄 13.txt
字号:
protected int m_counter = 0;
protected JProgressBar jpb;
public ProgressBarDemo()
{
super("JProgressBar Demo");
jpb = new JProgressBar();
jpb.setMinimum(m_min);
jpb.setMaximum(m_max);
jpb.setStringPainted(true);
JButton start = new JButton("开始");
//添加按钮的事件监听器
start.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
//启动一个线程
new UpdateThread().start();
}
});
getContentPane().add(jpb, BorderLayout.CENTER);
getContentPane().add(start, BorderLayout.WEST);
//显示框架窗口
setSize(300,70);
setVisible(true);
}
//应用程序的入口方法
public static void main(String args[])
{
ProgressBarDemo frame=new ProgressBarDemo();
//添加框架窗口的事件监听(监听关闭框架窗口事件)
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
//正常推出Java虚拟机
System.exit(0);
}
});
}
//用于完成更新进度条的值和耗时任务的线程
class UpdateThread extends Thread
{
Runnable runme;
public UpdateThread()
{
runme=new Runnable(){
public void run(){
//更新进度条的值
jpb.setValue(m_counter);
}
};
}
public void run()
{
m_counter = m_min;
while (m_counter <= m_max) {
SwingUtilities.invokeLater(runme);
m_counter++;
try {
Thread.sleep(500); //睡眠0.5秒,模拟耗时任务的处理
}
catch (Exception ex) {}
}
}
}
}
例程13-16
//SliderDemo.java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class SliderDemo extends JFrame
{
public SliderDemo()
{
//设置框架窗口标题
super("JSlider Demo");
//获取内容窗格容器
Container contentPane = getContentPane();
//默认是0~100
JSlider slider=new JSlider();
//为滑杆组件绘制标签
slider.setPaintLabels(true);
//滑杆组件的间隔为20
slider.setMajorTickSpacing(20);
//设置内容窗格容器的布局管理器为FlowLayout
contentPane.setLayout(new FlowLayout());
//把滑杆组件加入到内容窗格容器中
contentPane.add(slider);
//显示框架窗口
pack();
setVisible(true);
}
//应用程序的入口方法
public static void main(String args[])
{
SliderDemo frame=new SliderDemo();
//添加框架窗口的事件监听(监听关闭框架窗口事件)
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
//正常推出Java虚拟机
System.exit(0);
}
});
}
}
例程13-17
//获取内容窗格容器
Container contentPane = getContentPane();
//创建一个垂直的分割条组件
JSeparator s=new JSeparator(JSeparator.VERTICAL);
//获取分割条组件的首选大小
Dimension ps= s.getPreferredSize();
//设置内容窗格容器的布局管理器
contentPane.add(new FlowLayout());
//把Button加入到内容窗格容器的左边
contentPane.add(new JButton(“Left”));
//把分割条组件加入内容窗格容器的中间
contentPane.add(s);
//把Button加入到内容窗格容器的右边
contentPane.add( new JButton(“Right”));
//设置分割条组件的首选大小
s.setPreferredSize(new Dimension(ps.width,50));
例程13-18
import javax.swing.*;
import javax.swing.table.*;
import java.awt.*;
import java.awt.event.*;
public class TableColumnDemo extends JFrame
{
String[] strTableTitle={"第一列", "第二列", "第三列","第四列","第五列 "};
String[][] strTableData={
{"(1,1)","(1,2)","(1,3)","(1,4)","(1,5)"},
{"(2,1)","(2,2)","(2,3)","(2,4)","(2,5)"},
{"(3,1)","(3,2)","(3,3)","(3,4)","(3,5)"},
{"(4,1)","(4,2)","(4,3)","(4,4)","(4,5)"}
};
JTable table = new JTable(strTableData,strTableTitle);
public TableColumnDemo()
{
Container cp = getContentPane();
cp.add(new JScrollPane(table), BorderLayout.CENTER);
cp.add(new ControlPanel(), BorderLayout.NORTH);
//显示框架窗口
setSize(400,300);
setVisible(true);
}
//功能控制面板类
class ControlPanel extends JPanel
{
private JCheckBox checkBox = new JCheckBox("显示第三列");
//获取列表模型
TableColumnModel tcm = table.getColumnModel();
//第三列设置为隐藏列
TableColumn hideColumn = table.getColumn("第三列");
public ControlPanel()
{
checkBox.setSelected(true);
add(checkBox);
checkBox.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event)
{
if(checkBox.isSelected()) {
//把隐藏列添加到列表模型中,
tcm.addColumn(hideColumn);
//把添加的隐藏列移动到第三列位置
tcm.moveColumn(4,2);
}
else {
//隐藏第三列
tcm.removeColumn(hideColumn);
}
//由于JTable的Bug,下面的代码行必须调用
table.sizeColumnsToFit(-1);
}
});
}
}
public static void main(String args[])
{
TableColumnDemo frame=new TableColumnDemo();
//添加框架窗口的事件监听(监听关闭框架窗口事件)
frame.addWindowListener( new WindowAdapter() {
public void windowClosing(WindowEvent e) {
//正常推出Java虚拟机
System.exit(0);
}
});
}
}
例程13-19
//TableDemo.java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.*;
public class TableDemo
{
//程序的入口方法
public static void main(String[] args)
{
JFrame frame = new JFrame("Table");
frame.addWindowListener( new WindowAdapter() {
public void windowClosing(WindowEvent e)
{
//正常退出Java虚拟机
System.exit(0);
}
} );
// 创建带有背景的表格组件
ImageTable table = new ImageTable( 15, 3 );
//给表格组件的每个单元设置坐标值
for( int i=0; i<table.getRowCount(); i++ ){
for( int j=0; j< table.getColumnCount(); j++ ){
table.setValueAt("(" + i+ "," +j+ ")",i,j);
}
}
//把表格组件加入滚动面板中
JScrollPane sp = new JScrollPane( table );
//将滚动面板加入框架窗口中
frame.getContentPane().add( sp );
//显示框架窗口
frame.pack();
frame.show();
}
}
/*
* 一个定制的表格组件,其背景为图片
*/
class ImageTable extends JTable
{
// 要设置的表格的背景图片,可以替换成自己喜爱的图片.
ImageIcon image = new ImageIcon( "clouds.jpg" );
//表格组件的构造方法
public ImageTable(int rows, int cols)
{
super(rows,cols);
}
public ImageTable(Object[][] rowData, Object[] columnNames)
{
super(rowData,columnNames);
}
public ImageTable(java.util.Vector rowData, java.util.Vector columnNames)
{
super(rowData,columnNames);
}
public ImageTable(TableModel row, TableColumnModel column)
{
super(row,column);
}
public ImageTable(TableModel model)
{
super(model);
}
//准备绘制器
public Component prepareRenderer(TableCellRenderer renderer, int row, int column)
{
Component c = super.prepareRenderer( renderer, row, column);
// We want renderer component to be transparent so background image is visible
if( c instanceof JComponent )
((JComponent)c).setOpaque(false);
return c;
}
//绘制表格组件
public void paint( Graphics g )
{
// 设置表格组件的背景是透明的
setOpaque(false);
//获取表格组件的大小
Dimension d = getSize();
// 用平铺方式画背景图片
for( int x = 0; x < d.width; x += image.getIconWidth() )
for( int y = 0; y < d.height; y += image.getIconHeight() )
g.drawImage( image.getImage(), x, y, null, null );
//调用父类的方法
super.paint(g);
}
}
例程13-20
//TreeNodeDemo.java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.tree.*;
public class TreeNodeDemo extends JFrame
{
protected JTree m_tree ;
protected JTextField m_display;
public TreeNodeDemo()
{
super("SNMP Tree [OID]");
//创建树的根节点(第一层节点)
DefaultMutableTreeNode top = new DefaultMutableTreeNode(
new OidNode(1, "ISO"));
DefaultMutableTreeNode parent = top;
//创建树根节点的子节点(第二层节点)
DefaultMutableTreeNode node = new DefaultMutableTreeNode(new OidNode(0, "standard"));
parent.add(node);
node = new DefaultMutableTreeNode(new OidNode(2,"member-body"));
parent.add(node);
node = new DefaultMutableTreeNode(new OidNode(3, "org"));
parent.add(node);
parent = node;
//创建第二层节点的子节点(第三层节点)
node = new DefaultMutableTreeNode(new OidNode(6, "dod"));
parent.add(node);
parent = node;
//创建第三层节点的子节点(第四层节点)
node = new DefaultMutableTreeNode(new OidNode(1,"internet"));
parent.add(node);
parent = node;
//创建第四层节点的子节点(第五层节点)
node = new DefaultMutableTreeNode(new OidNode(1,"directory"));
parent.add(node);
node = new DefaultMutableTreeNode(new OidNode(2,"mgmt"));
parent.add(node);
node.add(new DefaultMutableTreeNode(new OidNode(1, "mib-2")));
node = new DefaultMutableTreeNode(new OidNode(3,"experimental"));
parent.add(node);
node = new DefaultMutableTreeNode(new OidNode(4,"private"));
node.add(new DefaultMutableTreeNode(new OidNode(1,"enterprises")));
parent.add(node);
node = new DefaultMutableTreeNode(new OidNode(5,"security"));
parent.add(node);
node = new DefaultMutableTreeNode(new OidNode(6,"snmpV2"));
parent.add(node);
node = new DefaultMutableTreeNode(new OidNode(7,"mail"));
parent.add(node);
//以树的根节点构造整个树
m_tree = new JTree(top);
//display root handle of tree
m_tree.setShowsRootHandles(true);
//Setting root line for Tree
m_tree.putClientProperty("JTree.lineStyle", "Angled");
//设置树的树节点是不可编辑的
m_tree.setEditable(false);
//添加监视树的鼠标事件
m_tree.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e){
tvwTreeView_mouseClicked(e);
}
});
//把树组件加入到滚动面板中
JScrollPane s = new JScrollPane(m_tree);
getContentPane().add(s, BorderLayout.CENTER);
m_display = new JTextField();
m_display.setEditable(false);
getContentPane().add(m_display, BorderLayout.SOUTH);
//显示框架窗口
setSize(400, 300);
setVisible(true);
}
public static void main(String argv[])
{
TreeNodeDemo frame=new TreeNodeDemo();
frame.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
}
//处理树组件的鼠标单击事件
private void tvwTreeView_mouseClicked(MouseEvent e)
{
//获取鼠标在树组件中选择位置的树的路径
TreePath path = m_tree.getPathForLocation(e.getX(),e.getY());
//如果鼠标没有选择树节点上,则直接返回
if( path == null ) return;
//获取当前树路径的存储的树节点对象的数组(从根节点到当前树节点)
Object[] nodes = path.getPath();
String oid = "";
for (int k=0; k<nodes.length; k++)
{
//强制转化成树节点
DefaultMutableTreeNode node = (DefaultMutableTreeNode)nodes[k];
//从树节点中获取其用户对象(OidNode的实例)
OidNode nd = (OidNode)node.getUserObject();
//把用户对象的对象名称进行累积
oid += "."+nd.getName();
}
m_display.setText(oid);
}
}
//树的用户对象类(UserObject),用于封装SNMP的OID
class OidNode
{
//对象标识
private int m_id;
//对象名称
private String m_name;
//构造方法
public OidNode(int id, String name)
{
m_id = id;
m_name = name;
}
//获取对象标识
public int getId()
{
return m_id;
}
//得到对象名称
public String getName()
{
return m_name;
}
//用户对象的字符串化,这个方法重写了Object.toString()
public String toString()
{
return m_name;
}
}
例程13-21
//MenuDemo.java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class MenuDemo extends JFrame
{
public MenuDemo(String strTitle)
{
//设置框架窗体标题
super(strTitle);
//创建菜单条并加入到框架窗体中
JMenuBar mnuMenuBar=new JMenuBar();
this.setJMenuBar( mnuMenuBar );
//创建File菜单和相应的菜单项
JMenu mnuFile= new JMenu("文件(F)");
JMenuItem mnuFileNew=new JMenuItem ("新建");
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -