Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使单个jButton激活整行jButton?_Java_Swing_Jbutton - Fatal编程技术网

Java 如何使单个jButton激活整行jButton?

Java 如何使单个jButton激活整行jButton?,java,swing,jbutton,Java,Swing,Jbutton,目前,我可以在单击按钮后激活所有JButton 但是我的教授要求我只点击1个按钮来激活最后两行按钮 e、 g 如果按下“11”按钮,整行按钮应激活,并在最后第二行显示“摘要”,在最后一行显示“12”、“15”…“32” 请使用输出图像和我的代码作为参考。提前谢谢 import java.util.List; 导入java.util.array; 导入java.util.Collections; 导入java.util.stream.collector; 导入javax.swing.JFrame

目前,我可以在单击按钮后激活所有JButton 但是我的教授要求我只点击1个按钮来激活最后两行按钮

e、 g 如果按下“11”按钮,整行按钮应激活,并在最后第二行显示“摘要”,在最后一行显示“12”、“15”…“32”

请使用输出图像和我的代码作为参考。提前谢谢

import java.util.List;
导入java.util.array;
导入java.util.Collections;
导入java.util.stream.collector;
导入javax.swing.JFrame;
导入javax.swing.JButton;
导入java.awt.GridLayout;
导入java.awt.event.ActionListener;
导入java.awt.event.ActionEvent;
导入java.awt.Color;
导入java.awt.Font;
公共类A3扩展JFrame实现ActionListener
{
私有最终JButton[]jbArray;
私有最终JButton[]jbArray2;
私有最终JButton[]jbArray3;
私人最终网格布局总图;
公众A3()
{
超级(“祝你好运”);
gl=新网格布局(9,7);
设置布局(gl);
jbArray=newjbutton[49];
jbArray2=新的JButton[7];
jbArray3=新的JButton[7];
对于(int i=0;i<49;i++)
{
jbArray[i]=新的JButton(“SP”);
添加(jbArray[i]);
jbArray[i].addActionListener(此);
}
String s=“SUMMARY”;
对于(int j=0;j<7;j++)
{
jbArray2[j]=新的JButton(String.valueOf(s.charAt(j));
增加(jbArray2[j]);
jbArray2[j].addActionListener(本);
}
对于(int l=0;l<7;l++)
{
jbArray3[l]=新的JButton(“SP”);
增加(jbArray3[l]);
jbArray3[l].addActionListener(此);
}
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
设置大小(700700);
setVisible(真);
}
静态列表列表;
公共静态无效forList()
{
int num[]=新int[49];
对于(int j=0;j
因此,通过一些猜测工作,基本上如果您点击“获胜”按钮,这将突出显示最后一行按钮,其中包含
rList
中的所有值

import java.awt.Color;
import java.awt.EventQueue;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.CompoundBorder;
import javax.swing.border.EmptyBorder;
import javax.swing.border.LineBorder;

public class Test {

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                JFrame frame = new JFrame();
                frame.add(new TestPane());
                frame.pack();
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);
            }
        });
    }

    public static class TestPane extends JPanel {

        private List<String> rList = new ArrayList<>(7);
        private List<JButton> summary = new ArrayList<>(7);

        public TestPane() {
            setLayout(new GridLayout(0, 7));

            List<String> values = new ArrayList<String>(7 * 7);
            for (int index = 0; index < 7 * 7; index++) {
                values.add(Integer.toString(index + 1));
            }

            Collections.shuffle(values);
            rList.addAll(values.subList(0, 7));
            Collections.shuffle(values);

            System.out.println(rList);

            for (String value : values) {
                JButton btn = makeButton(value);
                btn.addActionListener(new ActionHandler(btn));
                add(btn);
            }

            String text = "SUMMARY";
            for (String value : text.split("")) {
                add(makeButton(value));
            }
            for (int index = 0; index < 7; index++) {
                JButton btn = makeButton("");
                summary.add(btn);
                add(btn);
            }
        }

        public JButton makeButton(String text) {
            JButton btn = new JButton(text);
            btn.setFocusPainted(false);
            btn.setOpaque(true);
            btn.setBorder(new CompoundBorder(new LineBorder(Color.DARK_GRAY), new EmptyBorder(4, 8, 4, 8)));
            return btn;
        }

        public class ActionHandler implements ActionListener {

            private JButton button;

            public ActionHandler(JButton button) {
                this.button = button;
            }

            @Override
            public void actionPerformed(ActionEvent e) {
                String first = rList.get(0);
                String cmd = e.getActionCommand();
                JButton btn = (JButton) e.getSource();
                System.out.println("cmd = " + cmd);
                System.out.println("first = " + first);
                if (cmd.equals(first)) {
                    btn.setBackground(Color.GREEN);
                    for (int index = 0; index < rList.size(); index++) {
                        JButton b = summary.get(index);
                        String text = rList.get(index);
                        b.setText(text);
                        if (index == 0) {
                            b.setBackground(Color.GREEN);
                        } else {
                            b.setBackground(Color.YELLOW);
                        }
                    }
                } else if (rList.contains(cmd)) {
                    btn.setBackground(Color.YELLOW);
                }
            }

        }

    }
}
导入java.awt.Color;
导入java.awt.EventQueue;
导入java.awt.GridLayout;
导入java.awt.event.ActionEvent;
导入java.awt.event.ActionListener;
导入java.util.ArrayList;
导入java.util.Collections;
导入java.util.List;
导入javax.swing.JButton;
导入javax.swing.JFrame;
导入javax.swing.JPanel;
导入javax.swing.border.CompoundBorder;
导入javax.swing.border.EmptyBorder;
导入javax.swing.border.LineBorder;
公开课考试{
公共静态void main(字符串[]args){
invokeLater(新的Runnable(){
@凌驾
公开募捐{
JFrame=新JFrame();
frame.add(newtestpane());
frame.pack();
frame.setLocationRelativeTo(空);
frame.setVisible(true);
}
});
}
公共静态类TestPane扩展了JPanel{
私有列表rList=新的ArrayList(7);
私有列表摘要=新的ArrayList(7);
公共测试窗格(){
setLayout(新的GridLayout(0,7));
列表值=新的ArrayList(7*7);
对于(int-index=0;index<7*7;index++){
add(Integer.toString(索引+1));
}
集合。洗牌(值);
rList.addAll(values.subList(0,7));
集合。洗牌(值);
System.out.println(rList);
for(字符串值:值){
JButton btn=makeButton(值);
btn.addActionListener(新
import java.awt.Color;
import java.awt.EventQueue;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.CompoundBorder;
import javax.swing.border.EmptyBorder;
import javax.swing.border.LineBorder;

public class Test {

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                JFrame frame = new JFrame();
                frame.add(new TestPane());
                frame.pack();
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);
            }
        });
    }

    public static class TestPane extends JPanel {

        private List<String> rList = new ArrayList<>(7);
        private List<JButton> summary = new ArrayList<>(7);

        public TestPane() {
            setLayout(new GridLayout(0, 7));

            List<String> values = new ArrayList<String>(7 * 7);
            for (int index = 0; index < 7 * 7; index++) {
                values.add(Integer.toString(index + 1));
            }

            Collections.shuffle(values);
            rList.addAll(values.subList(0, 7));
            Collections.shuffle(values);

            System.out.println(rList);

            for (String value : values) {
                JButton btn = makeButton(value);
                btn.addActionListener(new ActionHandler(btn));
                add(btn);
            }

            String text = "SUMMARY";
            for (String value : text.split("")) {
                add(makeButton(value));
            }
            for (int index = 0; index < 7; index++) {
                JButton btn = makeButton("");
                summary.add(btn);
                add(btn);
            }
        }

        public JButton makeButton(String text) {
            JButton btn = new JButton(text);
            btn.setFocusPainted(false);
            btn.setOpaque(true);
            btn.setBorder(new CompoundBorder(new LineBorder(Color.DARK_GRAY), new EmptyBorder(4, 8, 4, 8)));
            return btn;
        }

        public class ActionHandler implements ActionListener {

            private JButton button;

            public ActionHandler(JButton button) {
                this.button = button;
            }

            @Override
            public void actionPerformed(ActionEvent e) {
                String first = rList.get(0);
                String cmd = e.getActionCommand();
                JButton btn = (JButton) e.getSource();
                System.out.println("cmd = " + cmd);
                System.out.println("first = " + first);
                if (cmd.equals(first)) {
                    btn.setBackground(Color.GREEN);
                    for (int index = 0; index < rList.size(); index++) {
                        JButton b = summary.get(index);
                        String text = rList.get(index);
                        b.setText(text);
                        if (index == 0) {
                            b.setBackground(Color.GREEN);
                        } else {
                            b.setBackground(Color.YELLOW);
                        }
                    }
                } else if (rList.contains(cmd)) {
                    btn.setBackground(Color.YELLOW);
                }
            }

        }

    }
}