deathizpro 12 Share Posted June 10, 2016 In the process of transferring my scripts over from another client. Can't seem to make the GUI pop up. The other client had a client-embedded interface and supported JFX so their gui system was a lot different. Followed computors guide using JForm Designer to make writing out the swing elements a lot quicker and get the GUI to show. Comparing our codes, theres not really much difference and his GUI pops up fine. In my onStart() method I initialize my Gui variable and set it to visible gui = new BotGui(this); gui.setVisible(true); And the gui never pops up on start. Without the gui, everything runs fine. 3 of my variables are required in the bot logic to give the user choices, but if permanently set them the bot will run fine. Heres the GUI code: public class BotGui extends JFrame { private Bot script; public BotGui(Bot main) { this.script = main; initComponents(); } private void getFoodChoice(ActionEvent e) { script.setFood(foodChoice.getSelectedItem().toString()); } private void getWithdrawAmt(ActionEvent e) { script.foodAmt = Integer.parseInt(foodAmt.getSelectedItem().toString()); } private void getHealChoice(ActionEvent e) { if (healChoice.isSelected()) { script.eatAtBank = true; } else { script.eatAtBank = false; } } private void getStartButtonAction(ActionEvent e) { script.waitForGui = false; this.setVisible(false); } private void initComponents() { foodChoice = new JComboBox<>(); label1 = new JLabel(); label2 = new JLabel(); foodAmt = new JComboBox<>(); healChoice = new JCheckBox(); startButton = new JButton(); //======== this ======== setTitle("Bot"); Container contentPane = getContentPane(); contentPane.setLayout(null); //---- foodChoice ---- foodChoice.setFont(new Font("Century Gothic", Font.PLAIN, 12)); foodChoice.setModel(new DefaultComboBoxModel<>(new String[] { "Trout", "Shark" })); foodChoice.addActionListener(e -> getFoodChoice(e)); contentPane.add(foodChoice); foodChoice.setBounds(125, 25, 165, 35); //---- label1 ---- label1.setText("Choose a food:"); label1.setFont(new Font("Century Gothic", Font.PLAIN, 12)); contentPane.add(label1); label1.setBounds(15, 25, 100, 30); //---- label2 ---- label2.setText("Withdraw Amt:"); label2.setFont(new Font("Century Gothic", label2.getFont().getStyle(), label2.getFont().getSize() - 1)); contentPane.add(label2); label2.setBounds(15, 80, 85, 45); //---- foodAmt ---- foodAmt.setFont(new Font("Century Gothic", Font.PLAIN, 12)); foodAmt.setModel(new DefaultComboBoxModel<>(new String[] { "5", "6", "7", })); foodAmt.setSelectedIndex(2); foodAmt.addActionListener(e -> getWithdrawAmt(e)); contentPane.add(foodAmt); foodAmt.setBounds(125, 85, 95, 36); //---- healChoice ---- healChoice.setText("Heal before going again?"); healChoice.setFont(new Font("Century Gothic", Font.PLAIN, 12)); healChoice.addActionListener(e -> getHealChoice(e)); contentPane.add(healChoice); healChoice.setBounds(new Rectangle(new Point(95, 140), healChoice.getPreferredSize())); //---- startButton ---- startButton.setText("Start"); startButton.setFont(new Font("Century Gothic", Font.PLAIN, 12)); startButton.addActionListener(e -> getStartButtonAction(e)); contentPane.add(startButton); startButton.setBounds(new Rectangle(new Point(125, 180), startButton.getPreferredSize())); contentPane.setPreferredSize(new Dimension(325, 240)); pack(); setLocationRelativeTo(getOwner()); } private JComboBox<String> foodChoice; private JLabel label1; private JLabel label2; private JComboBox<String> foodAmt; private JCheckBox healChoice; private JButton startButton; } Link to comment Share on other sites More sharing options...
slasso 27 Share Posted June 10, 2016 Can you setup remote debug and put a breakpoint before those two lines? Then try stepping into/over and see what happens. http://dreambot.org/forums/index.php/topic/5272-how-to-remote-debug-your-scripts/ Link to comment Share on other sites More sharing options...
Mad 86 Share Posted June 10, 2016 Can you setup remote debug and put a breakpoint before those two lines? Then try stepping into/over and see what happens. http://dreambot.org/forums/index.php/topic/5272-how-to-remote-debug-your-scripts/ you really think hes gonna be able to do that lol Open dreambot is command line and check to see if any errors Link to comment Share on other sites More sharing options...
slasso 27 Share Posted June 10, 2016 you really think hes gonna be able to do that lol Open dreambot is command line and check to see if any errors He should be able to, I think. It's not that hard Link to comment Share on other sites More sharing options...
deathizpro 12 Author Share Posted June 10, 2016 Did that. First time I put a breakpoint right on the onStart() method since I call both of my variables at the very top of onStart(); Bot froze upon start. Added a log line right above the initialization and setting visible of the JFrame in the onStart method but nothing happens. The debug connects to the local host fine but I never get the option to step into/over lines of code in IntelliJ. Also just using the logs on the command prompt, I get one error upon initially running, and stopping the script when the GUI doesn't show up. Apart from that, what I put specifically in the script to say the GUI is taking too long is all I get (put a timeout at the top of my onLoop() to wait 60 seconds for user input, or otherwise logout and stop the script). Debugger console only says: Connected to the target VM, address: 'localhost:12345', transport: 'socket' with no options to step through/into/over;Stopping it or closing the cmd prompt says: Disconnected from the target VM, address: 'localhost:12345', transport: 'socket' The log error (only happens when I first run and stop the script. I can run/stop it multiple times after and not get this error?): log4j:ERROR No output stream or file set for the appender named [LocalFile] Link to comment Share on other sites More sharing options...
slasso 27 Share Posted June 10, 2016 I'm not sure. Make sure all your imports are awt and not javafx. If you put a log before and after creating and setting the gui visible, are they printed out? Link to comment Share on other sites More sharing options...
deathizpro 12 Author Share Posted June 10, 2016 All of them are .awt & swing. I can't find the problem haha. Also updated with a side note: I have the script set so that my onExit() prints out progress to the log and stops the script, but I also have cases in my loop where if 'this' = false/true/etc, logout and stop (e.g. if out of food in bank). The script is set so that pressing the start button on the GUI sets a boolean to true and allows for the loop to run, and otherwise not pressing it stalls the loop until start is pressed or a timer is hit. If I press nothing when I run my script, the bot will wait like it should; but when I press the stop button manually after the GUI doesn't pop up, the bot will bypass that case and begin the loop as if the start button has been pressed? So it'll begin banking or walking and won't stop until it has hit it's logout/stop cases in the loop. Should that be happening? Link to comment Share on other sites More sharing options...
Cardozz 46 Share Posted June 10, 2016 I usually use this, which works: GUI class: public class WaiterGUI extends JFrame{ //fields, variables public static void main(String[] args) { WaiterGUI gui = new WaiterGUI(); gui.setVisible(true); } public WaiterGUI() { //code for the GUI } Using a main method in the GUI, you can easily run and test your event handlers in your IDE (eclipse = F11 key). You don't need the main method in the gui class, it's just for testing. Main class: @Override public void onStart() { WaiterGUI gui = new WaiterGUI(); gui.setVisible(true); gui.setLocationRelativeTo(null); while(gui.isVisible()){ sleep(20,50); } } Maybe the problem comes with you initialising "this" in your GUI method? Link to comment Share on other sites More sharing options...
deathizpro 12 Author Share Posted June 10, 2016 That fixed it. Turns out it wasn't the initializing this, the only line I had to add was the gui.setLocationRelativeTo(null); Back in business. Link to comment Share on other sites More sharing options...
Cardozz 46 Share Posted June 10, 2016 That fixed it. Turns out it wasn't the initializing this, the only line I had to add was the gui.setLocationRelativeTo(null); Back in business. All that line does is just set the location relative to a component. If it's set to null, it will center the frame in your screen. Doesn't really do much with the GUI itself. No idea why it works with that line lol. Anyway, glad i could help Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.