Ваш фон не отображается, потому что вы переопределяете метод краски. Вместо того чтобы устанавливать цвет фона попробуйте использовать Graphics
объект, переданный вам в методе paint
public void paint(Graphics g) {
if (connectionWorked == true) {
g.setColor(Color.green);
g.fillRect(0, 0, getWidth(), getHeight());
} else {
g.setColor(Color.red);
g.fillRect(0, 0, getWidth(), getHeight());
}
}
Как EJP сказал, что вы никогда не должны вызывать блокирование операций во время EDT. Проще говоря, это означает, что вы не выполняете операции, которые занимают значительное количество времени во время обычного выполнения вашей программы (поток интерфейса/событий). В вашем случае не запрашивайте сервер и блокируйте апплет от инициализации и отображения. Этого можно избежать, используя следующий код:
SwingUtilities.invokeLater(new Runnable() {
public void run() {
// do some heavy lifting here
}
});
Я не вижу, где Pinger()
когда-либо называется. При использовании класса Applet
вам необходимо перезаписать метод инициализации данных init()
.
Вы могли бы в конечном итоге с чем-то вроде этого
import java.applet.Applet;
import java.awt.Color;
import java.awt.Graphics;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.net.SocketFactory;
import javax.swing.SwingUtilities;
public class MinecraftPinger extends Applet {
private Boolean connectionWorked = null;
private boolean pinging = false;
@Override
public void init() {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
pinging = true;
startPinging();
}
});
}
public void paint(Graphics g) {
if (connectionWorked == null) {
g.drawString("Attempting Connection...", getWidth()/2-40, getHeight()/2-10);
} else if (connectionWorked == true) {
g.setColor(Color.green);
g.fillRect(0, 0, getWidth(), getHeight());
} else {
g.setColor(Color.red);
g.fillRect(0, 0, getWidth(), getHeight());
}
}
public void startPinging() {
while (pinging) {
try {
Socket socket = SocketFactory.getDefault().createSocket();
socket.setSoTimeout(2000);
socket.connect(new InetSocketAddress("mc.jujucraft.net", 25565));
socket.close();
connectionWorked = true;
} catch (Exception ex) {
connectionWorked = false;
Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex);
}
repaint();
try {
Thread.sleep(5000);
} catch (InterruptedException ex) {
Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
}
Пожалуйста, ваши код здесь; не на сторонних сайтах. –
Я не думаю, что ваш IP-адрес компьютера «192.148.1.1', я думаю, вы запутываете свои компьютеры ip с маршрутизаторами –
, что ip является поддельным, чтобы сделать апплет красным, но апплет не станет красным – superhamster