📄
字号:
例8.1 SwingDemo.java的源代码
import javax.swing.*;
public class SwingDemo{
public static void main(String[] args){
JFrame frame = new JFrame("这里是标题");
JLabel label = new JLabel("这是第一个Swing示例!");
frame.getContentPane().add(label);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}
}
例8.2 FrameDemo.java的源代码
import javax.swing.*;
import java.awt.event.*;
public class FrameDemo{
public static void main(String[] args){
JFrame frame = new JFrame("JFrameDemo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setResizable(false); //设置窗口为固定大小
frame.setSize(200,150);
frame.show();
}
}
例8.3 LabelDemo.java的源代码
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class LabelDemo extends JFrame{
protected JLabel label1,label2,label3;
public LabelDemo(){
setTitle("LabelDemo");
setSize(180,120);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container cp = getContentPane();
ImageIcon icon = new ImageIcon("images/metal-Inform.gif");
label1 = new JLabel("显示文字的标签",JLabel.CENTER);
label1.setToolTipText("第一个JLabel标签");
label2 = new JLabel("显示文字和图标的标签",icon,JLabel.LEFT);
label2.setHorizontalTextPosition(JLabel.LEFT);
label2.setToolTipText("第二个JLabel标签");
label3 = new JLabel(icon);
label3.setToolTipText("第三个JLabel标签");
cp.add(label1,"North");
cp.add(label2,"Center");
cp.add(label3,"South");
}
public static void main(String[] args){
LabelDemo frame = new LabelDemo();
frame.show();
}
}
例8.4 ButtonDemo.java的源代码
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class ButtonDemo extends JFrame implements ActionListener{
int count = 0;
protected JButton button;
protected JLabel label;
public ButtonDemo(){
setTitle("ButtonDemo");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(300,80);
ImageIcon buttonIcon = new ImageIcon("images/Button.gif");
button = new JButton("请点击这里",buttonIcon);
label = new JLabel("您还没有点击按钮");
button.setVerticalTextPosition(AbstractButton.CENTER);
button.setHorizontalTextPosition(AbstractButton.LEFT);
button.setMnemonic(KeyEvent.VK_M);
button.addActionListener(this);
Container cp = getContentPane();
cp.setLayout(new FlowLayout());
cp.add(button);
cp.add(label);
}
public void actionPerformed(ActionEvent e){
label.setText("您点击了 "+String.valueOf(count++)+"次");
}
public static void main(String[] args){
ButtonDemo frame = new ButtonDemo();
frame.setVisible(true);
}
}
例8.5 TextDemo.java的源代码
import javax.swing.*;
import javax.swing.event.*;
public class TextDemo extends JFrame{
private JLabel Label = new JLabel("同步显示输入内容");
private JTextField TextField;
private JPasswordField pwdField;
public TextDemo(){
super("TextDemo"); //调用父类JFrame的构造方法,设置窗口标题
setDefaultCloseOperation(EXIT_ON_CLOSE);
getContentPane().setLayout(new java.awt.FlowLayout());
TextField = new JTextField(15);
TextField.addCaretListener(new CaretListener(){
public void caretUpdate(CaretEvent e){
Label.setText(TextField.getText());
}
});
pwdField = new JPasswordField(15);
pwdField.setEchoChar('#');
getContentPane().add(TextField);
getContentPane().add(pwdField);
getContentPane().add(Label);
setSize(360,100);
}
public static void main(String[] args){
TextDemo td = new TextDemo();
td.show();
}
}
例8.6 TextAreaDemo.java的源代码
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
public class TextAreaDemo extends JFrame implements DocumentListener{
JTextArea text1,text2;
JScrollPane sp;
public TextAreaDemo(){
super("TextAreaDemo");
setSize(280,200);
setDefaultCloseOperation(EXIT_ON_CLOSE);
Container cp = getContentPane();
cp.setLayout(new FlowLayout()); //设置为流式布局
text1 = new JTextArea(8,10);
text2 = new JTextArea(8,10);
text1.setLineWrap(true);
text2.setLineWrap(true);
sp = new JScrollPane(text1);
sp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
cp.add(sp);
sp = new JScrollPane(text2);
cp.add(sp);
text1.getDocument().addDocumentListener(this);
}
public void insertUpdate(DocumentEvent e){
text2.setText(text1.getText());
}
public void removeUpdate(DocumentEvent e){
text2.setText(text1.getText());
}
public void changedUpdate(DocumentEvent e){}
public static void main(String[] args){
TextAreaDemo frame = new TextAreaDemo();
frame.show();
}
}
例8.7 CheckboxDemo.java的源代码
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class CheckboxDemo extends JFrame implements ItemListener{
private JTextField text;
private JCheckBox bold,italic;
private int valBold = Font.PLAIN; //初始化
private int valItalic = Font.PLAIN;
public CheckboxDemo(){
10 setTitle("JCheckBoxDemo"); //设置窗口标题
setSize(320,100);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
getContentPane().setLayout(new FlowLayout());
text = new JTextField("选择按钮并注意字体的变化",25);//25为文本域的宽度
text.setFont(new Font("Serif",Font.PLAIN,16));
bold = new JCheckBox("粗体");//复选框标题为“粗体”
bold.addItemListener(this);
italic = new JCheckBox("斜体");
italic.addItemListener(this);
italic.setSelected(true);
getContentPane().add(text);
getContentPane().add(bold);
getContentPane().add(italic);
}
public void itemStateChanged(ItemEvent e){
if(e.getSource()==bold)
valBold = bold.isSelected()? Font.BOLD : Font.PLAIN;
if(e.getSource()==italic)
valItalic = italic.isSelected()? Font.ITALIC : Font.PLAIN;
text.setFont(new Font("Serif",valBold + valItalic,16));
}
public static void main(String[] args){
JFrame frame = new CheckboxDemo();
frame.show();
}
}
例8.8 RadioButtonDemo.java的源代码
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class RadioButtonDemo extends JFrame implements ActionListener{
private JLabel Label;
private ButtonGroup bGroup;
private JRadioButton rButton;
public RadioButtonDemo(){
setTitle("JRadioButtonDemo");
setSize(250,100);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
getContentPane().setLayout(new FlowLayout());
Label = new JLabel("单击下面按钮将触发动作事件");
getContentPane().add(Label);
bGroup = new ButtonGroup();
rButton = new JRadioButton("JRadioButton1",true);
rButton.addActionListener(this);
bGroup.add(rButton);
rButton.setActionCommand("JRadioButton1");
getContentPane().add(rButton);
rButton = new JRadioButton("JRadioButton2",false);
rButton.addActionListener(this);
bGroup.add(rButton);
rButton.setActionCommand("JRadioButton2");
getContentPane().add(rButton);
}
public void actionPerformed(ActionEvent e){
String command = bGroup.getSelection().getActionCommand();
if(command.equals("JRadioButton1")){
Label.setText("您选择了JRadioButton1单选按钮");
}
if(command.equals("JRadioButton2")){
Label.setText("您选择了JRadioButton2单选按钮");
}
}
public static void main(String[] args){
JFrame.setDefaultLookAndFeelDecorated(true);//设定另一种窗体外观,见图8.10
JFrame frame = new RadioButtonDemo();
frame.show();
}
}
例8.9 FlowLayoutDemo.java的源代码
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class FlowLayoutDemo extends JFrame{
private JButton oneButton,twoButton,threeButton,fourButton,fiveButton;
private JLabel label;
private FlowLayout layout;
public FlowLayoutDemo(){
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setTitle("FlowLayoutDemo");
setSize(300, 200);
layout = new FlowLayout();
Container cp = getContentPane();
cp.setLayout(layout);
oneButton = new JButton("Button one");
twoButton = new JButton("Button two");
threeButton = new JButton("Button three");
fourButton = new JButton("Button four");
fiveButton = new JButton("Button five");
label = new JLabel("请改变窗口的大小");
cp.add(oneButton);
cp.add(twoButton);
cp.add(threeButton);
cp.add(fourButton);
cp.add(fiveButton);
cp.add(label);
}
public static void main(String[] args){
JFrame frame = new FlowLayoutDemo();
frame.show();
}
}
例8.10 PanelDemo.java的源代码
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class PanelDemo extends JFrame implements ActionListener{
private JButton oneButton,twoButton,threeButton,fourButton,fiveButton;
private JLabel Label;
private BorderLayout layout;
public PanelDemo(){
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setTitle("JPanelDemo");
setSize(400,200);
layout = new BorderLayout();
Container cp = getContentPane();
cp.setLayout(layout);
oneButton = new JButton("Button one");
twoButton = new JButton("Button two");
threeButton = new JButton("Button three");
fourButton = new JButton("Button four");
fiveButton = new JButton("Button five");
JPanel pNorth = new JPanel();//添加第一个面板,放在窗体的顶部(North)
pNorth.add(oneButton); //此面板里放置oneButton和twoButton
pNorth.add(twoButton);
cp.add(pNorth, "North");
JPanel pSouth = new JPanel();//添加第二个面板,放在窗体的底部(South)
pSouth.add(threeButton);// 此面板里放置threeButton、fourButton和fiveButton
pSouth.add(fourButton);
pSouth.add(fiveButton);
cp.add(pSouth, "South");
Label = new JLabel("中区是JLabel组件,显示您单击了哪一个按钮",JLabel.CENTER);
30 cp.add(Label,"Center"); //默认值Center,可以省略
oneButton.addActionListener(this);
twoButton.addActionListener(this);
threeButton.addActionListener(this);
fourButton.addActionListener(this);
fiveButton.addActionListener(this);
}
public void actionPerformed(ActionEvent e) {
Object source = e.getSource();
if (source == oneButton) Label.setText("您单击了Button one按钮");
else if (source == twoButton) Label.setText("您单击了Button two按钮");
else if (source == threeButton) Label.setText("您单击了Button three按钮");
else if (source == fourButton) Label.setText("您单击了Button four按钮");
else if (source == fiveButton) Label.setText("您单击了Button five按钮");
}
public static void main(String[] args){
JFrame frame = new PanelDemo();
frame.show();
}
}
例8.11 CardLayoutDemo.java的源代码
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class CardLayoutDemo extends JFrame implements ActionListener{
private CardLayout card;
private BorderLayout border;
private Container cp;
private JPanel upPanel,downPanel;
private JButton firstButton,nextButton,prevButton,lastButton;
private JLabel oneLabel,twoLabel,threeLabel,fourLabel;
public CardLayoutDemo(){
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(350,120);
setTitle("CardLayoutDemo");
card = new CardLayout(); //创建一个卡片布局管理器
border = new BorderLayout(); //创建一个边界布局管理器
upPanel = new JPanel(); //创建面板对象upPanel
downPanel = new JPanel(); //创建面板对象downPanel
firstButton = new JButton("第一张");
prevButton = new JButton("前一张");
nextButton = new JButton("下一张");
lastButton = new JButton("最后一张");
oneLabel = new JLabel("这是第一张标签卡片",JLabel.CENTER);//标签内容居中显示
twoLabel = new JLabel("这是第二张标签卡片",JLabel.CENTER);
threeLabel = new JLabel("这是第三张标签卡片",JLabel.CENTER);
fourLabel = new JLabel("这是第四张标签卡片",JLabel.CENTER);
cp = getContentPane();
cp.setLayout(border); //设置内容面板为边界布局
upPanel.setLayout(card); //将upPanel设置为卡片布局
30 upPanel.setBorder(BorderFactory.createMatteBorder(1,1,2,2,Color.white)); //添加面板边框
upPanel.add("one",oneLabel); //向卡片布局的面板添加标签,并附带识别字符串”one”
upPanel.add("two",twoLabel);
upPanel.add("three",threeLabel);
upPanel.add("four",fourLabel);
cp.add(upPanel,"Center"); //将面板upPanel添加到窗口的内容面板中
downPanel.add(firstButton);
downPanel.add(prevButton);
downPanel.add(nextButton);
downPanel.add(lastButton);
cp.add(downPanel,"South");
firstButton.addActionListener(this);
nextButton.addActionListener(this);
prevButton.addActionListener(this);
lastButton.addActionListener(this);
}
public void actionPerformed(ActionEvent e){
if(e.getSource()==firstButton)
card.first(upPanel);//显示面板中的第一个卡片(标签对象)
else if(e.getSource() == nextButton)
card.next(upPanel);
else if(e.getSource() == prevButton)
card.previous(upPanel);
else if(e.getSource() == lastButton)
card.last(upPanel);
}
public static void main(String[] args){
JFrame frame = new CardLayoutDemo();
frame.show();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -