Har en enkel fråga, går det här att göra eller inte och hur i så fall?
Jag undrar om jag kan köra en annan klass, alltså så att en klass gör en del utav programmet i java?
Jag har en class som heter menu.java och denna skulle jag alltså vilja att kördes i mitt huvudprogram Main.java.
menu.java ser ut såhär:
package View;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.KeyStroke;
public class Menu extends JFrame{
public Menu() {
setTitle("Meny");
JMenuBar menubar = new JMenuBar();
ImageIcon iconNew = new ImageIcon("new.png");
ImageIcon iconOpen = new ImageIcon("open.png");
ImageIcon iconSave = new ImageIcon("save.png");
ImageIcon iconClose = new ImageIcon("exit.png");
JMenu file = new JMenu("File");
file.setMnemonic(KeyEvent.VK_F);
JMenu imp = new JMenu("Import");
imp.setMnemonic(KeyEvent.VK_M);
JMenuItem newsf = new JMenuItem("Import newsfeed list...");
JMenuItem bookm = new JMenuItem("Import bookmarks...");
JMenuItem mail = new JMenuItem("Import mail...");
imp.add(newsf);
imp.add(bookm);
imp.add(mail);
JMenuItem fileNew = new JMenuItem("New", iconNew);
fileNew.setMnemonic(KeyEvent.VK_N);
JMenuItem fileOpen = new JMenuItem("Open", iconOpen);
fileNew.setMnemonic(KeyEvent.VK_O);
JMenuItem fileSave = new JMenuItem("Save", iconSave);
fileSave.setMnemonic(KeyEvent.VK_S);
JMenuItem fileClose = new JMenuItem("Close", iconClose);
fileClose.setMnemonic(KeyEvent.VK_C);
fileClose.setToolTipText("Exit application");
fileClose.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_W,
ActionEvent.CTRL_MASK));
fileClose.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
System.exit(0);
}
});
file.add(fileNew);
file.add(fileOpen);
file.add(fileSave);
file.addSeparator();
file.add(imp);
file.addSeparator();
file.add(fileClose);
menubar.add(file);
setJMenuBar(menubar);
setSize(360, 250);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
}
public static void main(String[] args) {
new Menu();
}
}
Den ska alltså rita ut en meny...
Funkar kanon om jag bara kör denna class men skulle jag sen vilja anropa den i min huvudklass main.java för att rita ut den där funkar det inte... eller åtminstone så vet inte jag hur man gör och hade hoppats på lite hjälp, min main ser ut såhär:
import View.Menu;
public class Main {
//deklarera klasser
private Menu viewMenu = new Menu();
viewMenu();
//Rita ut TopMenyn.
private void drawMenu(){
viewMenu();
}
}
mening är alltså att när man kör main.java så ska klassen menu.java anropas som ska rita ut menyn, det låter logiskt att det skulle var genomförbart men är det det och hur skriver man för att göra det i så fall?
Ja, men du tänker lite fel. Java är ett objektorienterat språk, så din main-klass ska skapa ett nytt objekt, så som du har gjort, men viewMenu (eller setVisible(true) som är den metod i en JFrame som gör att JFramen syns) ska ligga i din Menu-klass och inte som metod i Main-klassen.
Du tänker alltså lite för processorienterat.
129 ms totalt · 3 externa anrop · v20260731065814-full.25f56b17