Java 如何使单个jButton激活整行jButton?
目前,我可以在单击按钮后激活所有JButton 但是我的教授要求我只点击1个按钮来激活最后两行按钮 e、 g 如果按下“11”按钮,整行按钮应激活,并在最后第二行显示“摘要”,在最后一行显示“12”、“15”…“32” 请使用输出图像和我的代码作为参考。提前谢谢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
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);
}
}
}
}
}