我想问:
1.它的布局不好,怎么调整都是分两列的,我怎么把它调成一列。
2.RadioButton的响应还有其他更好的方法吗?谢谢。

解决方案 »

  1.   

    你采用GridLayout试一试,10*1的网格
      

  2.   

    噢。
    还有如何将TextField的接收字符位数限制再“1”位。
    谢谢。
      

  3.   

    import javax.swing.*;
    import java.awt.*;/**这个是主程序
     * @author      Fan
     * Date: 2003-5-24
     * Time: 20:40:13
     * Copyright(c) Since 2003 WisdomLeague
     */
    public class SportLottery extends JFrame {    public SportLottery() {
            setTitle("SportLottery");
            setSize(10,300);
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            SelectPanel sp;
            sp = new SelectPanel();
            setContentPane(sp);
            show();
        }
        public static void main(String[] arguments) {
            SportLottery sl;
            sl = new SportLottery();
        }    public Insets getInset() {
             return new Insets(10,10,10,10);
        }
    }
    import javax.swing.*;
    import java.awt.event.ItemListener;
    import java.awt.event.ActionEvent;
    import java.awt.event.ItemEvent;
    import java.awt.event.ActionListener;
    import java.awt.*;/**
     * User: Fan's
     * Date: 2003-5-24
     * Time: 21:26:00
     * Copyright(c) Since 2003 WisdomLeague
     */
    public class SelectPanel extends JPanel implements ItemListener,ActionListener {
        JRadioButton[] teams = new JRadioButton[10];
        JTextField NumOneText = new JTextField(2);    public SelectPanel() {
            ButtonGroup group;
            group = new ButtonGroup();
            GridLayout lm = new GridLayout(11,1,1,1);
            setLayout(lm);        NumOneText.addActionListener(this);
            NumOneText.setColumns(1);
            add(NumOneText);        teams[0] = new JRadioButton("0",true);
            teams[1] = new JRadioButton("1");
            teams[2] = new JRadioButton("2");
            teams[3] = new JRadioButton("3");
            teams[4] = new JRadioButton("4");
            teams[5] = new JRadioButton("5");
            teams[6] = new JRadioButton("6");
            teams[7] = new JRadioButton("7");
            teams[8] = new JRadioButton("8");
            teams[9] = new JRadioButton("9");        int i;
            for (i = 0; i < teams.length; i++) {
                teams[i].addItemListener(this);
                group.add(teams[i]);
                add(teams[i]);
            }
        }    public void itemStateChanged(ItemEvent e) {
             Object source;
             source = e.getSource();
             for (int j = 0; j < teams.length; j++) {
                 if (source == teams[j]) {
                     NumOneText.setText(teams[j].getText());
                 }
             }
             repaint();
        }    public void actionPerformed(ActionEvent e) {
            Object source;
            source = e.getSource();
            if (source == NumOneText) {
                int k = Integer.parseInt(NumOneText.getText());
                if (k <= 9) {
                    teams[k].setSelected(true);
                }
            }
        }}//JTextField的响应要回车以后才生效,问还有其他类型的响应让一输入数字就开始响应。谢谢。
      

  4.   

    import javax.swing.*;
    import java.awt.*;/**这个是主程序
     * Author      Fan
     * Date: 2003-5-24
     * Time: 20:40:13
     * Copyright(c) Since 2003 WisdomLeague
     */
    public class SportLottery extends JFrame {        SelectNumPanel sp1 = new SelectNumPanel(10);
            SelectNumPanel sp2 = new SelectNumPanel(10);
            SelectNumPanel sp3 = new SelectNumPanel(10);
            SelectNumPanel sp4 = new SelectNumPanel(10);
            SelectNumPanel sp5 = new SelectNumPanel(10);
            SelectNumPanel sp6 = new SelectNumPanel(10);
            SelectNumPanel sp7 = new SelectNumPanel(8);
            ButtonPanel bp = new ButtonPanel();    public SportLottery() {
            setTitle("SportLottery");
            setSize(360,250);
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            JPanel pane = new JPanel();
            GridLayout gl = new GridLayout(1,8,1,1);
            pane.setLayout(gl);
            pane.add(sp1);
            pane.add(sp2);
            pane.add(sp3);
            pane.add(sp4);
            pane.add(sp5);
            pane.add(sp6);
            pane.add(sp7);
            pane.add(bp);
            setContentPane(pane);
            show();
        }
        public static void main(String[] arguments) {
            SportLottery sl;
            sl = new SportLottery();
        }    public Insets getInset() {
             return new Insets(10,10,10,10);
        }
    }
    import javax.swing.*;
    import java.awt.event.*;
    import java.awt.*;/**
     *Author      Fan
     * Date: 2003-5-27
     * Time: 16:15:08
     * Copyright(c) Since 2003 WisdomLeague
     */
    public class SelectNumPanel extends JPanel implements ItemListener ,ActionListener,FocusListener {    JRadioButton[] teams;
        JTextField NumText = new JTextField(1);
        JComboBox Num = new JComboBox();
        int l;    public SelectNumPanel(int columns) {
            ButtonGroup group;
            group = new ButtonGroup();
            GridLayout lm = new GridLayout(columns+2,1,1,1);
            setLayout(lm);        NumText.addFocusListener(this);
            NumText.setColumns(1);
            add(NumText);        teams = new JRadioButton[columns];        int i;
            for (i = 0; i < teams.length ;i++) {
                teams[i] = new JRadioButton(Integer.toString(i));
                teams[i].addItemListener(this);
                group.add(teams[i]);
                add(teams[i]);
            }
        }    public void itemStateChanged(ItemEvent e) {
            Object source;
            source = e.getSource();
            for (int j= 0; j<teams.length; j++) {
                if(source == teams[j]) {
                    NumText.setText(teams[j].getText());
                }
            }
            repaint(0);
        }    public void actionPerformed(ActionEvent e) {
        }    public void focusGained(FocusEvent e) {    }    public void focusLost(FocusEvent e) {
            Object source;
            source = e.getSource();
            if (source == NumText) {
                l = Integer.parseInt(NumText.getText());           //**
                if (l <= 9 ) {
                    teams[l].setSelected(true);
                }
            }
        }    public Insets getInset() {
             return new Insets(10,10,0,0);
        }
    }import javax.swing.*;
    import java.awt.*;/**
     * Author   Fan
     * Date: 2003-5-28
     * Time: 16:05:56
     * Copyright(c) Since 2003 WisdomLeague.
     */
    public class ButtonPanel extends JPanel {
        JButton Random = new JButton("Random");    public ButtonPanel () {
            setSize(300,45);
            setLayout(new BorderLayout());
            add(Random, BorderLayout.NORTH);
        }     public Insets getInset() {
             return new Insets(10,10,0,0);
        }
    }
    //这个程序可以运行,但是一点JRadioButton就出现很多警告。
      

  5.   

    C:\j2sdk141\bin\javaw.exe -classpath C:\j2sdk141\jre\lib\charsets.jar;C:\j2sdk141\jre\lib\jaws.jar;C:\j2sdk141\jre\lib\jce.jar;C:\j2sdk141\jre\lib\jsse.jar;C:\j2sdk141\jre\lib\rt.jar;C:\j2sdk141\jre\lib\sunrsasign.jar;C:\j2sdk141\jre\lib\ext\dnsns.jar;C:\j2sdk141\jre\lib\ext\ldapsec.jar;C:\j2sdk141\jre\lib\ext\localedata.jar;C:\j2sdk141\jre\lib\ext\sunjce_provider.jar;C:\Documents and Settings\fan\IdeaProjects\Lottery\src;C:\j2sdk141 SportLottery
    java.lang.NumberFormatException: For input string: ""
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
    at java.lang.Integer.parseInt(Integer.java:447)
    at java.lang.Integer.parseInt(Integer.java:476)
    at SelectNumPanel.focusLost(SelectNumPanel.java:62)
    at java.awt.AWTEventMulticaster.focusLost(AWTEventMulticaster.java:168)
    at java.awt.Component.processFocusEvent(Component.java:4999)
    at java.awt.Component.processEvent(Component.java:4881)
    at java.awt.Container.processEvent(Container.java:1566)
    at java.awt.Component.dispatchEventImpl(Component.java:3598)
    at java.awt.Container.dispatchEventImpl(Container.java:1623)
    at java.awt.Component.dispatchEvent(Component.java:3439)
    at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1688)
    at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:734)
    at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:467)
    at java.awt.Component.dispatchEventImpl(Component.java:3468)
    at java.awt.Container.dispatchEventImpl(Container.java:1623)
    at java.awt.Component.dispatchEvent(Component.java:3439)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:450)
    at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:197)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:144)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:136)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:99)用IntelliJ Idea 3.0.4做的,提示得错误好像都是SelectNumPanel中“**”那一行的。
      

  6.   

    你把"**"上面的一行改为:
    if (source == NumText && !NumText.getText().trim().equals("")) {