webForumDet fria alternativet
Logga in / Bli medlem

Problem med ActionListener

Java

1 svar · 555 visningar · startad av Rödalacket

Medlem sedan feb. 20002 612 inlägg
Frågan#1

Jag har två filer, MainFrame och MyButton, den ena skapar en frame och den andra skapar knappar
som skall ligga i MainFrame och det funkar alldeles utmärkt.
Nu vill man säkert att något skall hända när man trycker på en knapp och det är då problemen kommer.
Koden för MainFrame ser ut så här:

//MainFrame.java

import javax.swing.*;
import java.awt.event.*;
import java.awt.*;

public class MainFrame implements ActionListener{
	
	static JFrame mainFrame;
	
	public MainFrame(){
		mainFrame = new JFrame("webForum");
		mainFrame.setSize(500, 300);
		ButtonLayout.buttonMaker();
		mainFrame.setVisible(true);
	}
	public static void main(String args[]) {
		new MainFrame();
	}
	
	public static void addButton(JPanel buttonPanel){
		mainFrame.getContentPane().add(buttonPanel, BorderLayout.SOUTH);
	}
	
	public void actionPerformed(ActionEvent e) {
    		if ("Ok".equals(e.getActionCommand())) {
			mainFrame.setBackground(new Color(255, 0, 0));
        	}
    	}
}

och för MyButton:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class ButtonLayout implements ActionListener{
	static JPanel buttonPanel;
	static JButton okButton, aboutButton;
	
	public static void buttonMaker(){
		buttonPanel = new JPanel(new GridLayout(1, 1));
		okButton = new JButton("Ok");
		aboutButton = new JButton("Om");
		
		okButton.setActionCommand("Ok");
		//okButton.addActionListener(this);[red][b]//PROBLEM[/b][/red]
		
		buttonPanel.add(okButton);
		buttonPanel.add(aboutButton);
		MainFrame.addButton(buttonPanel);
	}
	public void actionPerformed(ActionEvent e) {//??
    		if ("Ok".equals(e.getActionCommand())) {

        	}
    	}
}

Felet jag får är
non-static variable this cannot be referenced from a static contex
Hur gör jag för att få knapparna att fungera och inte bara vara "döda" knappar?

Medlem sedan feb. 20002 612 inlägg
#2

Hmm, nu verkar det funka.
Ändrade public static void buttonMaker(){ till
public void buttonMaker(){ och

public MainFrame(){
	mainFrame = new JFrame("webForum");
	mainFrame.setSize(500, 300);
	ButtonLayout.buttonMaker();
	mainFrame.setVisible(true);
}

fick bli

public MainFrame(){
	mainFrame = new JFrame("webForum");
	mainFrame.setSize(500, 300);
        ButtonLayout bl = new ButtonLayout();
	bl.buttonMaker();
	mainFrame.setVisible(true);
}

:)

257 ms totalt · 4 externa anrop · v20260731065814-full.5386d3bf
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)