Jump to content
View in the app

A better way to browse. Learn more.

OSBot :: 2007 OSRS Botting

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

How to make a class load in the main class?

Featured Replies

Hello everyone.

 

I've been struggling with something.

 

I have 1 class called main.class. And i have an events.class for my GUI. Now i want to load the events.class in the main.class. The reason why i have 2 classes is that i want to keep my classes clean. 1 for the GUI, 1 for the bot script.

 

Thanks in advance,

 

Sebastian.

add in onStart. event.GUI(this);

or change the GUI to w/e method that contains your gui.

Edited by Viliuks

  • Author

add in onStart. event.GUI(this);

or change the GUI to w/e method that contains your gui.

 

I don't really understand. My GUI is just a class. I followed a tutorial on how to make GUI. So i wanted to just test if the GUI would popup. 

 

To make it easier, this is my events.java: 

import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class events extends JFrame {
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	public static void main (String args[]) {
		events gui = new events();
		gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		gui.setTitle("Events Program");
		gui.setSize(300, 100);
		gui.setVisible(true);
	}
	
	private JLabel label;
	private JButton button;
	private JLabel label2;
	private JButton button2;
	private int x = 0,y = 0;

	public events() {
		setLayout(new FlowLayout());
		button = new JButton("Click for text");
		add(button);
		
		label = new JLabel("");
		add(label);
		
		event e = new event();
		button.addActionListener(e);
		
		button2 = new JButton("Click for more text");
		add(button2);
		
		label2 = new JLabel("");
		add(label2);
		
		event2 ev = new event2();
		button2.addActionListener(ev);
		
	}
	public class event2 implements ActionListener {
		public void actionPerformed(ActionEvent ev){
			if(y==0){
			label2.setText("Label 2 text");
			y = 1;
			}
			else if(y==1){
				y = 0;
				label2.setText("");
			}
		}
}
	public class event implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			if(x==0){
			label.setText("Text");
			x = 1;
			}
			else if(x == 1) {
				label.setText("");
				x = 0;
				
			}
		}
	}
}

When i add events.GUI(this); just doesn't work. 

I don't really understand. My GUI is just a class. I followed a tutorial on how to make GUI. So i wanted to just test if the GUI would popup. 

 

To make it easier, this is my events.java: 

import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class events extends JFrame {
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	public static void main (String args[]) {
		events gui = new events();
		gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		gui.setTitle("Events Program");
		gui.setSize(300, 100);
		gui.setVisible(true);
	}
	
	private JLabel label;
	private JButton button;
	private JLabel label2;
	private JButton button2;
	private int x = 0,y = 0;

	public events() {
		setLayout(new FlowLayout());
		button = new JButton("Click for text");
		add(button);
		
		label = new JLabel("");
		add(label);
		
		event e = new event();
		button.addActionListener(e);
		
		button2 = new JButton("Click for more text");
		add(button2);
		
		label2 = new JLabel("");
		add(label2);
		
		event2 ev = new event2();
		button2.addActionListener(ev);
		
	}
	public class event2 implements ActionListener {
		public void actionPerformed(ActionEvent ev){
			if(y==0){
			label2.setText("Label 2 text");
			y = 1;
			}
			else if(y==1){
				y = 0;
				label2.setText("");
			}
		}
}
	public class event implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			if(x==0){
			label.setText("Text");
			x = 1;
			}
			else if(x == 1) {
				label.setText("");
				x = 0;
				
			}
		}
	}
}

When i add events.GUI(this); just doesn't work. 

I'm guessing it would be events.main(this); in you'r case. seems a bit over-complicated class doe.

  • Author

I'm guessing it would be events.main(this); in you'r case. seems a bit over-complicated class doe.

 

Thanks bro. Testing it now.

Over-complicated? Do you have a better idea for this?

 

EDIT: It Worked! Thanks buddy. But i have one problem now. When i click on the GUI's exit X, it stops my whole OSBot client.

           Do you have any solutions to that? Sorry for the big questions tho. Very new to GUI's.

Edited by OSRS Sebastian

Thanks bro. Testing it now.

Over-complicated? Do you have a better idea for this?

 

EDIT: It Worked! Thanks buddy. But i have one problem now. When i click on the GUI's exit X, it stops my whole OSBot client.

           Do you have any solutions to that? Sorry for the big questions tho. Very new to GUI's.

you have this: 

gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

you could just remove it and everything would work fine.

or you could change EXIT_ON_CLOSE to HIDE_ON_CLOSE

Edited by Viliuks

  • Author

you have this: 

gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

you could just remove it and everything would work fine.

 

Oops. I'm such a noob.. Thanks for the help buddy :)

Oops. I'm such a noob.. Thanks for the help buddy smile.png

No problem, glad to help :P

  • Author

Can you help me with one little thing tho? if it's not too much ofcourse:

 

How do stop the loop from my script till the GUI is not visible anymore? Because, when the GUI is open, the script will automaticly start chopping tree's.

 

Can you help me with one little thing tho? if it's not too much ofcourse:

 

How do stop the loop from my script till the GUI is not visible anymore? Because, when the GUI is open, the script will automaticly start chopping tree's.

gui.setVisible(true);
        try {
            while (gui.isVisible()) {
                sleep(100);
            }
        }catch (InterruptedException e){
            e.printStackTrace();
        }

Can you help me with one little thing tho? if it's not too much ofcourse:

 

How do stop the loop from my script till the GUI is not visible anymore? Because, when the GUI is open, the script will automaticly start chopping tree's.

private boolean GUI_Initialized = false;

public void onStart() {

        // start GUI

        java.awt.EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                GUI = new /* GUI FILE NAME */();
                GUI_Initialized = true;
                GUI.setVisible(true);
            }
        });
        while (true) {
            if (GUI_Initialized && !GUI.isVisible()) {
                break;
            }
            sleepFor(100, 200);
        }

        // end GUI

/*
 * Any other onStart stuff
 */

}

This should solve your issue. Good luck! smile.png

 

Read the thread more thoroughly. Try this in your GUI class.

public class ShinyScript_GUI extends JFrame {

        // this keeps your class cleaner
	public JPanel mainPanel;

        // these are your labels, fields and anything else your GUI is using
	public JLabel labelTarget;
	public JTextField textFieldTarget;

        // this is the main executor for your GUI
	public ShinyScript_GUI() {
		super("ShinyScript v0.00");
		setSize(500, 500);
		setLocationRelativeTo(null);
		setDefaultCloseOperation(DISPOSE_ON_CLOSE);
		addToMainPanel();
		add(mainPanel);
	}

        // this helps keep your GUI clean as well
	public void addToMainPanel() {
		// main panel, this is pretty much 100% required
		mainPanel = new JPanel();
		mainPanel.setBounds(0, 0, 469, 496);
		mainPanel.setLayout(null);

		// buttons, fields, anything in your gui pretty much
		labelTarget = new JLabel("Target:");
		labelTarget.setBounds(21, 11, 50, 21);
		mainPanel.add(labelTarget);
		labelTarget.setFont(new Font("Arial", Font.BOLD, 12));
	}

Edited by Shiny

  • Author

Both solutions didn't work. But i think that problem is on my side. I'm a little confused tho. I have 2 classes. 1 class for the bot script. and 1 class for the GUI. Do i need to insert this into the onStart() { of my main.java (Bot script) or? 

 

Do you guys think it's better to just use 1 class for everything?

Both solutions didn't work. But i think that problem is on my side. I'm a little confused tho. I have 2 classes. 1 class for the bot script. and 1 class for the GUI. Do i need to insert this into the onStart() { of my main.java (Bot script) or? 

 

Do you guys think it's better to just use 1 class for everything?

 

I edited previous post with more info. If that doesn't work then I suggest doing more reading into java.

 

  • Author

Thanks for the quick reply! I guess it's on my side that i don't understand a living shit out of GUI's haha. I'm gonna watch more tutorials how to make a GUI. 

Do you have any idea where to start with? I heard WindowBuilder in Eclipse is a good one?

Thanks for the quick reply! I guess it's on my side that i don't understand a living shit out of GUI's haha. I'm gonna watch more tutorials how to make a GUI. 

Do you have any idea where to start with? I heard WindowBuilder in Eclipse is a good one?

 

Yes window builder is a good tool for GUI's. I suggest going through the newboston's tutorials for java. You will learn enough of a foundation to be able to branch out on your own. Good luck!

 

Edit: If my boredom continues today, I might make a tutorial on how to make an AIO woodcutter from scratch. We'll see. It might be a bit controversial, but there's like 100 AIO woodcutters and it's the easiest tutorial to make lol.

 

Edited by Shiny

Create an account or sign in to comment

Recently Browsing 0

  • No registered users viewing this page.

Account

Navigation

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.