Im attempting to make a live view of a controller's inputs in a gui. I'm use the .poll(); method to get new information from the controller's axes. I need to poll it constantly for the elements to move in real time but I can only get either the loop to run or the window to open, not both.
Here's the code that i've boiled down to just a loop and a gui element, this runs the loop and prints out "hello" every second but doesn't open the gui elements:
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;
public class movedot extends JFrame {
private JPanel contentPane;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
movedot frame = new movedot();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
* @throws InterruptedException
*/
public movedot() throws InterruptedException {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
JLabel lblDot = new JLabel("dot");
lblDot.setBounds(0,0,2,2);
contentPane.add(lblDot);
loop();
/* while (true){
lblDot.setBounds(new Rectangle(new Point(x++,y++),lblDot.getPreferredSize()));
Thread.sleep(1000);
}*/
}
public void loop() throws InterruptedException{
while (true){
System.out.println("hello");
Thread.sleep(1000);
}
}
}
And here's what I have with the controller implemented, same with this one, runs the logic and prints out the finalnumber but doesn't open the gui (there's probably a lot of extra stuff in there that I still need to clean up):
package controller2;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.ImageIcon;
import org.lwjgl.LWJGLException;
import org.lwjgl.input.Controller;
import org.lwjgl.input.Controllers;
public class controllergui {
private JFrame frame;
static Controller controller;
public static boolean Start;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
controllergui window = new controllergui();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the application.
*/
public controllergui() {
initialize();
}
/**
* Initialize the contents of the frame.
*/
public void initialize() {
frame = new JFrame();
frame.setBounds(100, 100, 218, 241);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);
//logic
try {
Controllers.create();
} catch (LWJGLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
controller=Controllers.getController(16);
JLabel label = new JLabel("");
label.setIcon(new ImageIcon("C:\\Users\\The Pheonix\\workspace\\controller2\\img\\dot.jpg"));
label.setBounds(100, 100, 2, 2);
frame.getContentPane().add(label);
while(true){
controller.poll();
Start=controller.isButtonPressed(0);
// System.out.println(Start);
// System.out.println(controller.getAxisValue(0));
float axis1= controller.getAxisValue(1);
float axis2= controller.getAxisValue(3);
// System.out.println(controller.getAxisValue(2));
// System.out.println(controller.getAxisValue(3));
// System.out.println(controller.getAxisValue(4));
// System.out.println(controller.getAxisValue(5));
float axis1Stage1 = axis1 + 1 ;
float axis1Stage2 = axis1Stage1 *100;
int finalNumber = Math.round(axis1Stage2);
System.out.println(finalNumber);
// System.out.println(axis3Stage1);
}
}
}