📄 swingdemo.java
字号:
package javax.swing;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.border.*;
import java.awt.*;
import java.awt.event.*;
import java.util.Hashtable;
import java.util.Dictionary;
import java.util.Enumeration;
import java.util.Locale;
import java.util.Vector;
import java.util.EventListener;
import java.util.Set;
import java.util.TreeSet;
///////////////////////////////////////////////////////
public class SwingDemo
{
public static void main(String args[])
{
try
{
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}catch (Exception e) {}
SwingFrame sf = new SwingFrame();
//SwingGraphics.createSwingGraphics(new Graphics(), 3);
}
}
//////////////////////////////////////////////////////
class SwingFrame extends JFrame
{
public SwingFrame()
{
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setTitle("SwingDemo");
setSize(300, 200);
getContentPane().setLayout(new BorderLayout());
getContentPane().add(new SwingPanel(), BorderLayout.CENTER);
getContentPane().add(new JPanel(), BorderLayout.NORTH);
getContentPane().add(new JPanel(), BorderLayout.SOUTH);
getContentPane().add(new JPanel(), BorderLayout.WEST);
getContentPane().add(new JPanel(), BorderLayout.EAST);
show();
}
}
/////////////////////////////////////////////////////////////
class SwingPanel extends JPanel
{
//ButtonGroup将RadioButton分组,但并不具有外观,所以不用也不能
//在JPanel上添加它
private ButtonGroup bg = new ButtonGroup();
public SwingPanel()
{
//this.setBorder(BorderFactory.createTitledBorder(
// BorderFactory.createEtchedBorder(), "good"));
this.setBorder(new MyLineBorder(new Color(208, 208, 191), 1, true));
makeButton("sb2");
makeTextField(1, "shenme ", 20);
makeCheckBox(1, "haha", true);
makeRadioButton(1, "陈浩",true);
makeRadioButton(2, "YY", true);
makeComboBox(1, null);
//add(bg);
}
public void makeButton(String s)
{
JButton jb = new JButton(s);
add(jb);
jb.addActionListener(new ButtonAction(s));
}
public void makeTextField(int ID, String text, int columns)
{
JTextField jt = new JTextField(text, columns);
jt.getDocument().addDocumentListener(new TextFieldListener(ID));
add(jt);
}
public void makeCheckBox(int ID, String text, boolean b)
{
JCheckBox jc = new JCheckBox(text, b);
jc.addActionListener(new CheckListener(ID));
jc.setFocusable(false);
add(jc);
}
public void makeRadioButton(int ID, String text, boolean b)
{
JRadioButton jr = new JRadioButton(text, b);
jr.addActionListener(new RadioListener(ID));
jr.setFocusable(false);
bg.add(jr);//把RadioButton添加到组中。
add(jr);//把jr添加到面板
}
public void makeComboBox(int ID, Object [] text)
{
String s[] = new String [20];
for(int i = 0; i < s.length; i++)
s[i] = new String("text " + i);
JComboBox jc = new JComboBox(s);
jc.addActionListener(new ComboListener(ID));
add(jc);
}
public void ptr(String s)
{
System.out.println ("In the Panel method " + s);
}
/**
* 下的内部类实现监听器接口
*/
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
private class ButtonAction implements ActionListener
{
private String ButtonName = null;
public ButtonAction(String s)
{
ButtonName = s;
}
public void actionPerformed(ActionEvent e)
{
//内部类能够直接调用外部类的方法
ptr("dd");
}
}
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
private class TextFieldListener implements DocumentListener
{
private int ID;
public TextFieldListener(int ID)
{
this.ID = ID;
}
public void insertUpdate(DocumentEvent e)
{
System.out.println ("insertUpdate ID = " + ID);
}
public void removeUpdate(DocumentEvent e)
{
System.out.println ("removeUpdate ID = " + ID);
}
public void changedUpdate(DocumentEvent e)
{
System.out.println ("changedUpdate ID = " + ID);
}
}
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
private class CheckListener implements ActionListener
{
private int ID;
public CheckListener(int ID)
{
this.ID = ID;
}
public void actionPerformed(ActionEvent e)
{
System.out.println("ID = " + ID);
System.out.println (((JCheckBox)e.getSource()).isSelected());
}
}
private class RadioListener implements ActionListener
{
private int ID;
public RadioListener(int ID)
{
this.ID = ID;
}
public void actionPerformed(ActionEvent e)
{
System.out.println ("RadioButton " + ID + " Click");
System.out.println (((JRadioButton)e.getSource()).isSelected());
}
}
private class ComboListener implements ActionListener
{
private int ID;
public ComboListener(int ID)
{
this.ID = ID;
}
public void actionPerformed(ActionEvent e)
{
System.out.println ("JComboBox " + ID + " Click");
System.out.println (((String)((JComboBox)e.getSource()).getSelectedItem()).toString());
}
}
}
/////////////////////////////////////////////////////////////////
class SwingButton extends JButton
{
public SwingButton()
{
setText("Jbutton");
}
}
/////////////////////////////////////////////////////////////////
class SwingTextField extends JTextField
{
public SwingTextField()
{
setText("JTextField");
}
}
//自己的lineBorder类,重画了圆角。
class MyLineBorder extends LineBorder
{
public MyLineBorder(Color color, int thickness, boolean roundedCorners)
{
super(color, thickness, roundedCorners) ;
}
public void paintBorder(Component c, Graphics g, int x, int y, int width, int height) {
Color oldColor = g.getColor();
int i;
/// PENDING(klobad) How/should do we support Roundtangles?
g.setColor(lineColor);
for(i = 0; i < thickness; i++) {
if(!roundedCorners)
g.drawRect(x+i, y+i, width-i-i-1, height-i-i-1);
else
g.drawRoundRect(x+i, y+i, width-i-i-1, height-i-i-1, 7, 7);
}
System.out.println("in");
g.setColor(oldColor);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -