1

だから私は私の2番目のJButtonが最初のものの逆を印刷したい. 1-10 と 10-1。しかし、2番目のボタンに何が欠けているのかわかりません。また、ボタンを複数回押すことができるように、ボタンの値を戻すにはどうすればよいですか?

package testgui1;
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;

    public class Testgui1 extends JFrame implements ActionListener //Alist visar vad
    //som görs när man utför ett klick
    {
        int i = 1;
        int two = 11;
        JLabel myLabel = new JLabel();//Ny panelen
        JPanel mypanel = new JPanel();
        JButton mybutton = new JButton("1-10");
        JButton mybutton2 = new JButton("10-1");
        Testgui1()
        {
            super("Meny");
            setSize(200,200);//Storlek på frame
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//stänger ner rutan vid X
            Container con = this.getContentPane();//ärver mainframe
            con.add(mypanel); 
            mybutton.addActionListener(this);
            mybutton2.addActionListener(this);
            mypanel.add(myLabel); 
            mypanel.add(mybutton);
            mypanel.add(mybutton2);
            setVisible(true);
        }
        public void actionPerformed(ActionEvent event)
        {  
           Object source = event.getSource();
            if (source == mybutton)
           {
            StringBuilder usual = new StringBuilder();
            while(i < 11) {
            usual.append(" ").append(i);
                i++;
    }
            JOptionPane.showMessageDialog(null, usual, "1-10", 
                 JOptionPane.PLAIN_MESSAGE);
                     setVisible(true);
         {
         if (source == mybutton2)
            {
        StringBuilder reverse = new StringBuilder(); 
            while (two > 0) {
            reverse.append("").append(two);
            two--;
    }
            JOptionPane.showMessageDialog(null,usual,"10-1",
                    JOptionPane.PLAIN_MESSAGE);
                    setVisible(true);
    }}}}
      public static void main(String[] args) {new Testgui1();}
    }
4

2 に答える 2

1

2つの問題がありました:

1)mybutton2使用していた方は のusualはずですreverse

2)その後も、中括弧の後に:

    if (source == mybutton)
       {

が正しく一致していなかったため、mybutton2クリックしても何も表示されませんでした。

修正されたコード:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Testgui1 extends JFrame implements ActionListener //Alist visar vad
//som görs när man utför ett klick
{
    int i = 1;
    int two = 11;
    JLabel myLabel = new JLabel();//Ny panelen
    JPanel mypanel = new JPanel();
    JButton mybutton = new JButton("1-10");
    JButton mybutton2 = new JButton("10-1");
    Testgui1()
    {
        super("Meny");
        setSize(200,200);//Storlek på frame
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//stänger ner rutan vid X
        Container con = this.getContentPane();//ärver mainframe
        con.add(mypanel);
        mybutton.addActionListener(this);
        mybutton2.addActionListener(this);
        mypanel.add(myLabel);
        mypanel.add(mybutton);
        mypanel.add(mybutton2);
        setVisible(true);
    }
    public void actionPerformed(ActionEvent event)
    {
       Object source = event.getSource();
        if (source == mybutton)
       {
        StringBuilder usual = new StringBuilder();
        while(i < 11) {
        usual.append(" ").append(i);
            i++;
                     }
        JOptionPane.showMessageDialog(null, usual, "1-10",
             JOptionPane.PLAIN_MESSAGE);
                 setVisible(true);}
     {
     if (source == mybutton2)
        {
    StringBuilder reverse = new StringBuilder();
        while (two > 0) {
        reverse.append(" ").append(two);
        two--;
}
        JOptionPane.showMessageDialog(null,reverse,"10-1",
                JOptionPane.PLAIN_MESSAGE);
                setVisible(true);
}}}
  public static void main(String[] args) {new Testgui1();}
}

更新:コードの特定のブロックを改善するために要求されたとおり:

ボタンをクリックするたびに、変数iを作成して初期化するだけです。two

  if (source == mybutton)
       {
        StringBuilder usual = new StringBuilder();
        while(i < 11) {
        usual.append(" ").append(i);
            i++;
                     }
        JOptionPane.showMessageDialog(null, usual, "1-10",
             JOptionPane.PLAIN_MESSAGE);
                 setVisible(true);
        i=1;//////////////////MAKE i=1 EVERYTIME////////////////
        }
     {
     if (source == mybutton2)
        {
    StringBuilder reverse = new StringBuilder();
        while (two > 0) {
        reverse.append(" ").append(two);
        two--;
   }
        JOptionPane.showMessageDialog(null,reverse,"10-1",
                JOptionPane.PLAIN_MESSAGE);
                setVisible(true);two=11;/////////////////MAKE two=11 EVERYTIME////
   }

     }
于 2013-01-23T14:32:00.543 に答える
0

これは、2つの異なるStringBuilderを使用しているためですが、どちらの場合も、を表示するだけusualです。

JOptionPane.showMessageDialog(null,usual, ...

2番目の呼び出しでは、を使用しますreverse

于 2013-01-23T14:21:03.297 に答える