【发布时间】:2018-05-03 22:47:52
【问题描述】:
目前,我可以在单击所有 jButton 时激活它们 但是我的教授要求我只点击 1 个 jButtons 来激活最后两行 jButtons。
例如 如果按下“11”jButton,则应激活整行 jButton,并在最后第二行显示“SUMMARY”,在最后一行显示“12”、“15” ....“32”。
请使用输出图像和我的代码作为参考。提前致谢!
import java.util.List;
import java.util.Arrays;
import java.util.Collections;
import java.util.stream.Collectors;
import javax.swing.JFrame;
import javax.swing.JButton;
import java.awt.GridLayout;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.Color;
import java.awt.Font;
public class A3 extends JFrame implements ActionListener
{
private final JButton [] jbArray;
private final JButton [] jbArray2;
private final JButton [] jbArray3;
private final GridLayout gl;
public A3 ()
{
super ("Good Luck To You");
gl = new GridLayout (9,7);
setLayout(gl);
jbArray = new JButton [49];
jbArray2 = new JButton [7];
jbArray3 = new JButton [7];
for (int i = 0; i < 49; i++)
{
jbArray [i] = new JButton ("SP");
add(jbArray[i]);
jbArray[i].addActionListener(this);
}
String s = "SUMMARY";
for (int j = 0; j < 7; j++)
{
jbArray2 [j] = new JButton (String.valueOf(s.charAt(j)));
add (jbArray2[j]);
jbArray2[j].addActionListener(this);
}
for (int l = 0; l < 7; l++)
{
jbArray3 [l] = new JButton ("SP");
add(jbArray3[l]);
jbArray3[l].addActionListener(this);
}
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(700,700);
setVisible(true);
}
static List <Integer> aList;
public static void forList ()
{
int num [] = new int [49];
for (int j = 0; j < num.length; j++)
num[j] = j + 1;
aList = Arrays.stream (num)
.boxed ()
.collect (Collectors.toList());
Collections.shuffle(aList);
}
static List <Integer> rList;
public static void forRandom()
{
int r [] = new int [7];
for (int i = 0; i < 7; i++)
r [i] = (int)(Math.random() * 49);
rList = Arrays.stream(r)
.boxed()
.distinct()
.sorted()
.collect (Collectors.toList());
}
@Override
public void actionPerformed (ActionEvent e)
{
String first = String.valueOf(rList.get(0));
int n = 0;
{
for (JButton k : jbArray)
{
if (e.getSource() == k)
{
k.setText(String.valueOf(aList.get(n)));
k.getText();
//Winning prize
for ( int i = 0; i < 7; i++)
{
String rFirst = String.valueOf(rList.get(i));
if(k.getText().equals(rFirst))
{
k.setBackground (Color.YELLOW);
k.setFont(new Font ("Serif", Font.BOLD, 19));
}
}
//Top prize
if (k.getText().equals(first))
{
k.setBackground (Color.GREEN);
k.setFont (new Font ("Italic", Font.BOLD, 22));
}
}
++n;
}
}
int a = 0;
{
for (JButton p : jbArray3)
{
if (e.getSource() == p)
{
p.setText(String.valueOf(rList.get(a)));
p.setBackground (Color.YELLOW);
p.setForeground(Color.BLUE);
p.setFont(new Font ("Serif", Font.BOLD, 19));
}
++a;
if (p.getText().equals(first))
{
p.setBackground(Color.GREEN);
}
for (JButton m : jbArray2)
{
if (e.getSource() == m)
{
m.setForeground(Color.RED);
m.setFont (new Font ("Serif", Font.BOLD, 19));
}
}
}
}
}
public static void main (String [] args)
{
A3 a3 = new A3 ();
forList ();
forRandom();
}
}
【问题讨论】:
-
请为此类请求提供minimal reproducible example。这太长了,没有关注问题。