Hallo,
Ich habe ein Problemchen mit meinem Programm... Ich möchte gerne dass auf Knopfdruck eine Funktion der Hauptklasse aufgerufen wird (um einen anderen Inhalt anzuzeigen), weiss aber nicht wie ich es anstellen soll. Es gibt keine Instanz der Hauptklasse, die ich im Listener ansprechen könnte.
Anbei alle 3 Klassen...
kann jemand mir verraten wie man das Javatechnisch sauber regelt?
Ich habe ein Problemchen mit meinem Programm... Ich möchte gerne dass auf Knopfdruck eine Funktion der Hauptklasse aufgerufen wird (um einen anderen Inhalt anzuzeigen), weiss aber nicht wie ich es anstellen soll. Es gibt keine Instanz der Hauptklasse, die ich im Listener ansprechen könnte.
Anbei alle 3 Klassen...
Code:
import javax.swing.*;
import java.awt.*;
/**
*
* @author seb-zero
*
* This is the main Program Class
*/
public class CdMan{
/*********************************************************************************/
private static CustomButton button1;
private static CustomButton button2;
private static JLabel buttonHeadLabel;
/**
* this function sets up the button bar, which is constant throughout whole usage
* of the program.
*/
private static JPanel showButtonBar()
{
button1=new CustomButton("add disc","moo");
button2=new CustomButton("search", "find discs for editing, viewing, deleting");
buttonHeadLabel = new JLabel("<HTML>pick action
</HTML>", JLabel.LEFT);
buttonHeadLabel.setPreferredSize(new Dimension(90,45));
// create the button container
buttonPane=new JPanel();
buttonPane.setBackground(Color.white);
buttonPane.setPreferredSize(new Dimension(100,480));
buttonPane.setLayout(new FlowLayout());
//add the buttons
buttonPane.add(buttonHeadLabel);
buttonPane.add(button1);
buttonPane.add(button2);
return buttonPane;
}
/*********************************************************************************/
private static JFrame mainWindow;
private static Container mainPane;
private static JPanel contentPusher;
private static GridBagConstraints c;
private static JPanel buttonPane;
private static JPanel ContentPanel;
/**
* this function sets up the basic framework of the GUI
*/
private static void showGUI()
{
mainWindow = new JFrame("SebZero's DiscManager");
mainPane = mainWindow.getContentPane();
contentPusher = new JPanel();
contentPusher.setPreferredSize(new Dimension(750,480));
contentPusher.setLayout(new GridBagLayout());
c = new GridBagConstraints();
// Menu area
c.gridx=0;
c.gridy=0;
c.weightx=0;
contentPusher.add(showButtonBar(),c);
//content Area
ContentPanel=new JPanel();
ContentPanel.setBackground(Color.blue);
c.gridwidth=1;
c.gridheight=1;
c.gridx=1;
c.gridy=0;
c.weightx=1.0;
contentPusher.add(ContentPanel,c);
mainPane.add(contentPusher);
mainWindow.pack();
mainWindow.setVisible(true);
}
/*********************************************************************************/
private static void newDisc()
{
System.out.println("new disc is created");
}
/*********************************************************************************/
/**
* Run threadsafe later...
*/
public static void main(String[] Args)
{
showGUI();
}
/*********************************************************************************/
}
Code:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
/**
* @author seb-zero
*
* ActionListener
*/
public class MyAL implements ActionListener {
public void actionPerformed(ActionEvent e) {
System.out.println(e.getSource());
//diese Abfrage funktioniert anscheinend nicht...
//wie bekomme ich denn den namen des eventverursachenden
//objekts uebermittelt?
if (e.getSource()=="button1")
{
System.out.println("b1");
//hier soll eine Methode der Hauptklasse aufgerufen werden.
//wie soll ich das anstellen, es gibt ja keine instanz
//von cdman?!?!
}
}
}
Code:
import javax.swing.JButton;
import java.awt.*;
public class CustomButton extends JButton {
public CustomButton(String labelValue, String toolTipValue){
this.setPreferredSize(new Dimension(90,25));
this.setFont(new Font("Verdana", Font.PLAIN, 10));
this.createToolTip();
this.setToolTipText(toolTipValue);
this.setText(labelValue);
this.addActionListener(new MyAL());
}
}
kann jemand mir verraten wie man das Javatechnisch sauber regelt?