В настоящее время застрял как в поиске способа правильно нарисовать линию, так и в функции JLabel, работающей должным образом (если вы нажмете на нее, она изменит цвет четырех выбранных типов)
Наш профессор хочет, чтобы мы создали игруиз четырех гипотез о цвете, которые являются полностью ложной игрой, пользователь введет желаемую вершину и ребро, программа автоматически сгенерирует вершину и ребро, пользователь щелкнет по вершине, чтобы развернуть вершину в четыре предварительно запрограммированных цвета, а затем пользовательотправьте его, и программа проверит его, у пользователя есть только 3 попытки, прежде чем он потерпит неудачу, если пользователь потерпел неудачу или бросил, программа закончит игру для него, наконец, это достижения, которые являются необязательными.
I 'Теперь я сгорел, так что любой совет полезен (извините за грязный код).Заранее спасибо.Код:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.Random;
import java.util.Arrays;
import java.util.ArrayList;
public class FourColor extends JFrame implements ActionListener
{
ArrayList<Integer> ab = new ArrayList<Integer>();
ArrayList<Integer> ba = new ArrayList<Integer>();
JLabel Label1 = new JLabel("Vertex:");
JLabel Label2 = new JLabel("Edge:");
JButton Button1 = new JButton("Enter");
JButton Button2 = new JButton("Back");
JTextField TextField1 = new JTextField();
JTextField TextField2 = new JTextField();
Font Font1 = new Font("Century Schoolbook",Font.BOLD,13);
Container Contains;
int Tries, i,h,l,a,b;
final int BUTTON_WIDTH = 20;
final int BUTTON_HEIGHT = 20;
public int Ver,Edg;
public FourColor()
{
Contains = getContentPane();
Contains.setLayout(null);
Contains.setBackground(Color.WHITE);
setSize(800,400);
setLocation(0,0);
setResizable(false);
setVisible(true);
setTitle("4 Color Game");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Contains.add(Label1);
Contains.add(Label2);
Contains.add(Button1);
Contains.add(Button2);
Contains.add(TextField1);
Contains.add(TextField2);
Label1.setBounds(15,20,100,25);
Label2.setBounds(15,50,100,25);
Button1.setBounds(20,90,90,25);
Button2.setBounds(120,90,90,25);
TextField1.setBounds(90,20,150,25);
TextField2.setBounds(90,50,150,25);
Label1.setFont(Font1);
Label2.setFont(Font1);
Button1.addActionListener(this);
Button2.addActionListener(this);
Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
int w = getSize().height;
int h = getSize().height;
int x = (dim.width-w)/2;
int y = (dim.height-h)/2;
}
public void actionPerformed(ActionEvent Evt)
{
if(Evt.getSource()==Button2)
{
setVisible(false);
//new MainMenu();
}
Random random = new Random();
Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
int w = getSize().height;
int h = getSize().height;
int x = (dim.width-w)/2;
int y = (dim.height-h)/2;
double xy = random.nextInt(dim.width-w);
double yx = random.nextInt(dim.height-h);
if(Evt.getSource()==Button1)
{
try
{
double vert = Double.parseDouble(TextField1.getText());
double edge = Double.parseDouble(TextField2.getText());
vert = - 1;
edge = - 1;
}
catch (Exception e)
{
JOptionPane.showMessageDialog(null, "Error, Please enter a number");
}
double vert = Double.parseDouble(TextField1.getText());
double edge = Double.parseDouble(TextField2.getText());
Ver = (int) vert;
Edg = (int) edge;
h = Ver;
if (Double.parseDouble(TextField1.getText())>2 && Double.parseDouble(TextField1.getText()) < Double.parseDouble(TextField2.getText()))
{
setSize(1366,768);
Label1.setVisible(false);
Label2.setVisible(false);
Button1.setVisible(false);
Button2.setBounds((1366/2),(700),100,20);
Button2.setVisible(true);
TextField1.setVisible(false);
TextField2.setVisible(false);
for(int i = 0; i < vert ; i++)
{
//Generates the jlabel
JLabel lbtn[] = new JLabel[Ver];
int j = (int) xy;
int k = (int) yx;
a = random.nextInt(j);
b = random.nextInt(k);
lbtn[i].setBounds (a, b, BUTTON_WIDTH, BUTTON_HEIGHT);
lbtn[i].setBackground(Color.BLACK);
ab.add(a);
ba.add(b);
Contains.add(lbtn[i]);
lbtn[i].setVisible(true);
Contains.revalidate();
Contains.repaint();
System.out.println(i+"a");
}
for(int i = 0; i < vert ; i++)
{
//Should change the color of the jlabels when clicked
// lbtn.get[i].setIcon(rd);
Contains.revalidate();
Contains.repaint();
}
}
else if (TextField1.getText() == "" &&TextField2.getText() == "" )
{
JOptionPane.showMessageDialog(null, "Error, Please enter number in the text fields");
}
else if (Double.parseDouble(TextField1.getText())<2 || Double.parseDouble(TextField2.getText())<Double.parseDouble(TextField1.getText()))
{
JOptionPane.showMessageDialog(null, "Error, Please enter < 2 vertex and edges < vertex");
}
}
}
@Override
public void paint (Graphics g)
{
//this paint should create lines that connects the vertex
Contains.revalidate();
Contains.repaint();
g.drawLine(ab.get(i),ba.get(i),ab.get(i+1),ba.get(i+1));
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
new FourColor();
}
});
}
}