java swing 元件大全----測試Swing所有元件及其相應的事件
package testSwing;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.tree.*;
import javax.swing.event.*;
import javax.swing.border.*;
import javax.swing.table.*;
/**
* Swing 元件測試程式
* 測試Swing所有元件及其相應的事件
* @author 天翼.李 2003.4.17 晚23:14
* @link http://www.robochina.org
* @link [email protected]
*/
public class SwingTest02 extends JFrame
{
/**
* 主模組,初始化所有子模組,並設定主框架的相關屬性
*/
public SwingTest02()
{
// 初始化所有模組
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)
{
// 釋放資源,退出程式
// System.exit(0)是將你的整個這個虛擬機器裡的內容都停掉了
// 而dispose()只是關閉這個視窗,但是並沒有停止整個application
// exit() 無論什麼,記憶體都釋放了!也就是說連JVM都關閉了,記憶體里根本不可能還有什麼東西
// exit(0):0指程式正常退出
// 1指程式有錯誤但是能正常退出
dispose();
System.exit(0);
}
});
setSize(700,500);
setTitle("Swing 元件大全簡體版");
// 隱藏frame的標題欄,此功暫時關閉,以方便使用window事件
// setUndecorated(true);
setLocation(200,150);
show();
}
////////////////////////////////////////////////////////////////////////////
/**
* 選單欄處理模組
* JMenuBar --+
* --JMenu--+
* --JMenuItem --ActionListener
*
*/
class MenuTest extends JMenuBar
{
private JDialog aboutDialog;
/**
* 選單初始化操作
*/
public MenuTest()
{
JMenu fileMenu = new JMenu("檔案");
JMenuItem exitMenuItem = new JMenuItem("退出",KeyEvent.VK_E);
JMenuItem aboutMenuItem = new JMenuItem("關於...",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.show();
}
});
}
/**
* 返回關於對話方塊
*/
public JDialog getAboutDialog()
{
return aboutDialog;
}
/**
* 設定"關於"對話方塊的外觀及響應事件,操作和JFrame一樣都是在內容
* 框架上進行的
*/
public void initAboutDialog()
{
aboutDialog.setTitle("關於");
Container con =aboutDialog.getContentPane();
// Swing 中使用html語句
Icon icon = new ImageIcon("smile.gif");
JLabel aboutLabel = new JLabel("<html><b><font size=5>"+
"<center>Swing 元件大全簡體版!"+"<br>天翼.李",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));
}
});
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 class
//////////////////////////////
public BottomPanel()
{
pb = new JProgressBar();
pb.setPreferredSize(new Dimension(680,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("複選按鈕");
JButton button = new JButton("開啟檔案");
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,"選擇的檔案",JOptionPane.YES_OPTION);
}
}
});
////////////////////////////////////////
//public
//////////////////////////////////////////
JToggleButton toggleButton = new JToggleButton("雙態按鈕");
ButtonGroup buttonGroup = new ButtonGroup();
JRadioButton radioButton1 = new JRadioButton("單選按鈕1",false);
JRadioButton radioButton2 = new JRadioButton("單選按鈕2",false);
// 組合框的處理
JComboBox comboBox = new JComboBox();
comboBox.setToolTipText("點選下拉列表增加選項");
comboBox.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
JComboBox comboBox =(JComboBox)e.getSource();
comboBox.addItem("程式設計師");
comboBox.addItem("分析員");
}
});
// 列表框的處理
DefaultListModel litem = new DefaultListModel();
litem.addElement("香蕉");
litem.addElement("水果");
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,"訊息框",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("文字域,點選開啟<檔案按鈕>可選擇檔案");
textField.setActionCommand("textField");
JTextPane textPane = new JTextPane();
textPane.setCursor(new Cursor(Cursor.TEXT_CURSOR));
textPane.setText("編輯器,試著點選文字區,試著拉動分隔條。");
textPane.addMouseListener(new MouseAdapter ()
{
public void mousePressed (MouseEvent e)
{
JTextPane textPane = (JTextPane)e.getSource();
textPane.setText("編輯器點選命令成功");
// 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("複製成功");
}
});
*/
JSplitPane splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT,textField,textPane);
JTable table = new JTable(10,10);
//table.showHorizontalLines(true);
//table.showVerticalLines(true);
//table.gridColor(Color.blue);
JPanel pane = new JPanel();
pane.add(table.getTableHeader(),BorderLayout.NORTH);
pane.add(table);
tab.addTab("文字演示",splitPane);
//tab.addTab(table.getTableHeader());
tab.addTab("表格演示",pane);
tab.setPreferredSize(new Dimension(500,600));
this.add(tab);
this.setEnabled(true);
}
}
public static void main(String args[])
{
// 設定主框架屬性,此處沒有使用,可開啟看看效果
try
{
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}catch (Exception e){
System.out.println("設定主框架屬性時出現異常");
}
new SwingTest02();
}
}
相關推薦
java swing 元件大全----測試Swing所有元件及其相應的事件
package testSwing; import javax.swing.*; import java.awt.*; import java.awt.event.*; import javax.swing.tree.*; import javax.swing.even
java中File類的常用所有方法及其應用
建立: createNewFile()在指定位置建立一個空檔案,成功就返回true,如果已存在就不建立,然後返回false。 mkdir() 在指定位置建立一個單級資料夾。 mkdirs() 在指定位置建立一個多級資料夾。 renameTo(File dest)如果目標檔
java Swing元件大全超牛的例子
http://www.blogjava.net/tjsjrx2010/archive/2009/12/11/305663.htmlpackage com.mygame;import java.awt.BorderLayout;import java.awt.Color;imp
java Swing:獲取JFrame下的所有控制元件
獲取JFrame上的所有控制元件: 程式碼: for(Component co:ui.getRootPane().getContentPane().getComponents()) { Systen.out.println(co.getClass().toString()); //得到
JAVA第三次作業——Swing元件中Jist的運用
0x00 簡述 Swing是GUI(圖形使用者介面)開發工具包,內容豐富,簡單易用,所以本篇文章中只編寫Swing中的Jlist元件,其他Swing中的元件相關內容這裡筆者就不介紹了,文章中未涉及的元件讀者請自行去查閱相關資料。 0x01 Jframe框架
Java----AWT元件開發和Swing介面程式設計(一)
一、AWT元件開發 1、AWT入門 AWT是抽象視窗工具箱的縮寫,它為編寫圖形使用者介面提供了使用者介面,通過這個介面就可以繼承很多方法,省去了很多工作。AWT還能使應用程式更好地同用戶進行互動。 AWT中的容器是一種特殊
JAVA元件大全複選框,選項按鈕,複選方框,下拉式列表的使用介紹
7-1:使用JCheckBox元件: 類層次結構圖: java.lang.Object --java.awt.Component --java.awt.Container --javax.swing.JComponent --javax.swi
vue $emit子元件傳出多個引數,如何在父元件中在接收所有引數的同時新增自定義引數
前言 很多時候用$emit攜帶引數傳出事件,並且又需要在父元件中使用自定義引數時,這時我們就無法接受到子元件傳出的引數了。找到了兩種方法可以同時新增自定義引數的方法。 方法一 子元件傳出單個引數時: // 子元件 this.$emit('test',this.param) // 父元件 @test=
【Stimulsoft Reports Java教程】複製報表之間的元件
下載Stimulsoft Reports Java最新版本 此示例顯示如何在不同報表之間複製相同元件StiPage,StiHeader等。例如,讓我們使用兩個報表OriginalReport和CustomReport。 首先,您需要從檔案反序列化報表。 StiReport origina
Lodop控制元件NewPage();測試輸出空白頁
LODOP.NewPage();和LODOP.NewPageA();是強制分頁語句,兩者的區別可檢視本部落格的相關博文:Lodop強制分頁LODOP.NewPage()和LODOP.NewPageA()可在列印項之間強制分頁,手動分頁,如果一個任務在不新增列印項的情況下一開始就分頁,結果會怎樣?如果強制分頁之
Hadoop體系所有元件預設埠列表
Why? Hadoop叢集元件太多,預設埠無法記住,有事後需要檢視,就在這裡羅列下這裡包含我們使用到的元件:HDFS, YARN, Hbase, Hive, ZooKeeper。 What? 埠 作用 9000 fs.def
QT控制元件大全
總圖: V20170901增加部分控制元件。 1:動畫按鈕 1:可設定顯示的影象和底部的文字 2:可設定普通狀態圖片 3:可設定進入狀態圖片 4:可設定離開狀態圖片 5:按照比例自動居中繪製 2:柱狀標尺控制元件 1:可設定精確度
C#控制元件大全
C#控制元件及常用設計整理 1、窗體 1、常用屬性 (1)Name屬性:用來獲取或設定窗體的名稱,在應用程式中可通過Name屬性來引用窗體。 (2) WindowState屬性: 用來獲取或設定窗體的視窗狀態。 取值有三種:&nbs
朱曄和你聊Spring系列S1E8:湊活著用的Spring Cloud(含一個實際業務貫穿所有元件的完整例子)
本文會以一個簡單而完整的業務來闡述Spring Cloud Finchley.RELEASE版本常用元件的使用。如下圖所示,本文會覆蓋的元件有: Spring Cloud Netflix Zuul閘道器伺服器 Spring Cloud Netflix Eureka發現伺服器 Spring Cloud Net
5.13.1.2 jmeter元件-非測試元件—HTTP代理伺服器的使用
.HTTP代理伺服器錄製方法 1.新增執行緒組。開啟JMeter,左邊樹上有一個空的測試計劃,新增使用者定義變數等(以便變數替換)。點選該計劃的右鍵選單新增->執行緒組新增一個執行緒組。 2.新增Http代理伺服器。點選計劃的右鍵選單新增->非測試
5.13.1.3 jmeter元件-非測試元件—HTTP代理伺服器--HTTPS證書及其安裝
關於HTTPS證書 HTTP協議採用明文傳輸資料,如果是敏感資料,就不安全了,HTTPs(安全套接字層超文字傳輸協議)採用密文傳輸資料,在通訊中需要獲得伺服器的證書(公鑰) HTTPS連線使用證書來驗證瀏覽器和Web伺服器之間的連線。當通過HTTPS連線時,伺服
VS2015一鍵解除安裝所有元件工具,徹底解除安裝乾淨。
轉載於 遊戲鳥Ray http://blog.csdn.net/a359877454 https://blog.csdn.net/a359877454/article/details/52679041 宣告這外掛不是我寫的,是國外的一位同行寫的,偶然在網上發現感
Unity一鍵複製貼上物件的所有元件和引數
Unity開發中,你如果想要把某個物件的元件全部都拷貝到新的物件上,除了一個個複製貼上元件,還要修改元件中的引數,也就是不斷重複Copy Component 、Paste Component As New、Paste Component Values,實在是一件很麻煩的事,所
React16 元件化+測試+全流程 實戰線上賬本專案
第1章 課程介紹 介紹了整個課程的背景知識,專案簡介,學習流程,可以掌握的知識點,以及學習方法和前置知識 1-1 課程導讀 第2章 設計稿:從藍圖開始 從原型圖出發,分析整個應用的需求和功能點,最後規定了檔案結構和程式碼規範。 2-1 從分析設計稿開始 2-2 檔案程式碼結構 第3章 首頁:
H5端密碼控制元件自動化測試
最近在做H5端UI自動化測試,其中遇到了一個棘手問題就是密碼控制元件,因為密碼控制元件的按鈕每次都是隨機不一樣的,沒法固定去點選輸入密碼。密碼的輸入框是div不是input,所以沒法用send_keys()這個方法。輸入的密碼都是經過加密後傳給後臺的,所以沒法直接傳值。各種途徑都被堵死,寶寶心裡苦啊。想來想去