我最近刚开始自学,图形化界面,按照书上的提示试着写了一个关于图形化界面(有按钮)的小程序。可总是有错误,所以。我想要几个关于图形化界面的最简单的程序,希望能从中发现自己的不足,最好是详细的……可以发到我的邮箱([email protected]).多谢了。

解决方案 »

  1.   

    给你个用Graphics的例子import java.awt.Color;
    import java.awt.Graphics;
    import java.awt.Graphics2D;
    import java.awt.Point;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseMotionAdapter;
    import java.util.Random;import javax.swing.BorderFactory;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JWindow;public class TestWindow extends JFrame {
    private static final long serialVersionUID = 1L;
    private Random ran = new Random();
    private int count = 30;
    private int[] snowX = null;
    private int[] snowY = null;
    private MyPanel pane;
    private Point lastPoint = null;
    private JWindow winPop;
    private JLabel labNum;

    public TestWindow() {
    init();
    }

    private void init() {
    this.setAlwaysOnTop(true);
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.setSize(1024, 768);
    if (snowX == null) {
    snowX = new int[count];
    snowY = new int[count];
    for (int i = 0; i < snowX.length; i++) {
    snowX[i] = ran.nextInt(1024);
    }
    for (int i = 0; i < snowY.length; i++) {
    snowY[i] = ran.nextInt(768);
    }
    }
    pane = new MyPanel();
    winPop = new JWindow(this);
    winPop.setSize(50, 20);
    winPop.setVisible(false);
    labNum = new JLabel();
    labNum.setBorder(BorderFactory.createLineBorder(Color.BLACK));
    winPop.add(labNum);
    this.setContentPane(pane);
    }

    public static void main(String[] args) {
    TestWindow frame = new TestWindow();
    frame.setVisible(true);
    }

    class MyPanel extends JPanel {
    private static final long serialVersionUID = 1L;
    private int index = -1;

    public MyPanel() {
    super();
    initialize();
    }

    private void initialize() {
    addMouseMotionListener(new MouseMotionAdapter(){
    public void mouseMoved(MouseEvent e) {
    index = -1;
    lastPoint = e.getPoint();
    for (int i = count-1; i >= 0; i--) {
    if (lastPoint.x > snowX[i] && 
    lastPoint.x < snowX[i]+108 && 
    lastPoint.y > snowY[i] && 
    lastPoint.y < snowY[i]+124) {
    index = i;
    break;
    }
    }
    if (index != -1) {
    winPop.setLocation(snowX[index]+50, snowY[index]+50);
    labNum.setText(""+index);
    winPop.setVisible(true);
    } else {
    winPop.setVisible(false);
    }
    }

    @Override
    public void mouseDragged(MouseEvent e) {
    Point point = e.getPoint();
    int offsetX = point.x - lastPoint.x;
    int offsetY = point.y - lastPoint.y;
    if (index != -1) {
    snowX[index] += offsetX;
    snowY[index] += offsetY;
    }
    repaint();
    lastPoint = point;
    }
    });
    } @Override
    public void paint(Graphics g) {
    super.paint(g);
    Graphics2D g2d = (Graphics2D) g;
    for (int i = 0; i < count; i++) {
    g2d.setColor(new Color(128,80,i*8));
    int x = snowX[i];
    int y = snowY[i];
    g2d.fillRect(x, y, 108, 124);
    }
    }
    }
    }
      

  2.   

    再给你个使用GridBagLayout的例子
    import java.awt.Component;
    import java.awt.Container;
    import java.awt.Font;
    import java.awt.GraphicsEnvironment;
    import java.awt.GridBagConstraints;
    import java.awt.GridBagLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;import javax.swing.ButtonGroup;
    import javax.swing.JCheckBox;
    import javax.swing.JComboBox;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JRadioButton;
    import javax.swing.JScrollPane;
    import javax.swing.JTextArea;public class Demo extends JFrame implements ActionListener{

    private JComboBox fontNames;
    private JComboBox fontSize;
    private JCheckBox bold;
    private JCheckBox italic;
    private JTextArea showArea;
    private JLabel nameLabel;
    private JLabel sizeLabel;
    private Container cont;

    public Demo() {
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.setSize(400, 300);
    this.setLocationRelativeTo(null);
    GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
    String[] names = ge.getAvailableFontFamilyNames();
    String[] sizes = {"16","20","24","28","32","36"};
    fontNames = new JComboBox(names);
    fontSize = new JComboBox(sizes);
    bold = new JCheckBox("Bold");
    italic = new JCheckBox("Italic");
    showArea = new JTextArea("dsdfdadasd2");
    showArea.setEditable(false);
    showArea.setLineWrap(true);
    showArea.setWrapStyleWord(true);
    nameLabel = new JLabel("Font");
    sizeLabel = new JLabel("Size");
    fontNames.addActionListener(this);
    fontSize.addActionListener(this);
    bold.addActionListener(this);
    italic.addActionListener(this);
    cont = this.getContentPane();
    cont.setLayout(new GridBagLayout());
    GridBagConstraints constraint = new GridBagConstraints();

    constraint.fill = GridBagConstraints.NONE;
    constraint.weightx = 0;
    constraint.weighty = 0;
    add(nameLabel, constraint, 0, 0, 1, 1);
    add(sizeLabel, constraint, 0, 1, 1, 1);

    constraint.fill = GridBagConstraints.HORIZONTAL;
    constraint.weightx = 100;
    add(fontNames, constraint, 1, 0, 1, 1);
    add(fontSize, constraint, 1, 1, 1, 1);

    constraint.fill = GridBagConstraints.NONE;
    constraint.anchor = GridBagConstraints.CENTER;
    constraint.weightx = 0;
    constraint.weighty = 0;
    add(bold, constraint, 0, 2, 2, 1);
    add(italic, constraint, 0, 3, 2, 1);

    constraint.fill = GridBagConstraints.BOTH;
    constraint.weightx = 100;
    constraint.weighty = 100;
    add(new JScrollPane(showArea), constraint, 2, 0, 1, 4);

    JRadioButton small = new JRadioButton("small");
    JRadioButton middle = new JRadioButton("middle");
    JRadioButton large = new JRadioButton("large");
    ButtonGroup group = new ButtonGroup();
    group.add(small);
    group.add(middle);
    group.add(large);
    small.setSelected(true);

    }

    public void add(Component c, GridBagConstraints constraint, 
    int x, int y, int w, int h) {
    constraint.gridx = x;
    constraint.gridy = y;
    constraint.gridwidth = w;
    constraint.gridheight = h;
    cont.add(c, constraint);
    } @Override
    public void actionPerformed(ActionEvent e) {
    String name = (String)fontNames.getSelectedItem();
    int style = (bold.isSelected() ? Font.BOLD : 0) + 
    (italic.isSelected() ? Font.ITALIC : 0);
    String strSize = (String)fontSize.getSelectedItem();
    int size = Integer.parseInt(strSize);
    Font font = new Font(name, style, size);
    showArea.setFont(font);
    } public static void main(String[] args) {
    Demo frame = new Demo();
    frame.setVisible(true);
    }
    }
      

  3.   

    去 java2s.com 网站看代码示例。