webForumDet fria alternativet

Problem med ActionListener

1 svar · 555 visningar · startad av Rödalacket

RödalacketMedlem sedan feb. 20001 160 inlägg
#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?

RödalacketMedlem sedan feb. 20001 160 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);
}

:)

Genererad på 384 ms · cache AV · v20260730165559-full.f96bc7eb