Hallo Leute,
steh irgendwie grad aufm Schlauch. ich habe zwei seperate Klassen, Klasse1 zur Darstellung diverser Komponenten und Klasse2, wo mehrere Toolbars mit Buttons erzeugt werden.
Beide Klassen werden einer dritten Klasse übergeben in der für alle Unterklassen gültigen Parameter vorhanden sind.
Nun soll bei Druck auf einen Button etwas in Klasse1 passieren, nur leider weis ich nicht wie ich denen Wert zwischen den Klassen übergeben kann.
hier mal etwas beispielhafter Code:
Das innere Panel welches per "importPanel" an den Basisframe übergeben wird
Hier der Basisframe:
Und hier die Buttontoolbar:
Das DarstellungsFrame enthält die main-Methode.
Wie gehe ich nun vor, dass die Darstellungklasse mitkriegt, dass positionButton gedrückt wurde und reagiert?
Ich habs auch mal mit na Actionklasse versucht den laufenden Frame zu übergeben(die obige mit dieser ersetzt), aber da scheiter ich auch.
Trotzdem hier mal die Actionklasse:
steh irgendwie grad aufm Schlauch. ich habe zwei seperate Klassen, Klasse1 zur Darstellung diverser Komponenten und Klasse2, wo mehrere Toolbars mit Buttons erzeugt werden.
Beide Klassen werden einer dritten Klasse übergeben in der für alle Unterklassen gültigen Parameter vorhanden sind.
Nun soll bei Druck auf einen Button etwas in Klasse1 passieren, nur leider weis ich nicht wie ich denen Wert zwischen den Klassen übergeben kann.
hier mal etwas beispielhafter Code:
Das innere Panel welches per "importPanel" an den Basisframe übergeben wird
Code:
public class DarstellungFrame extends BasisFrame { //leitet von Basisframe ab
// ...
public static void main(String[] args)
{
SwingUtilities.invokeLater(new Runnable() {
public void run()
{
DarstellungFrame inst = new DarstellungFrame();
inst.setPreferredSize(new Dimension(650,700));
inst.setSize(new Dimension(650,700));
inst.setTitle("Darstellung");
inst.setLocationRelativeTo(null);
inst.setVisible(true);
}
});
}
/**
* Centerpanel an Basisframe übergeben
* */
public DarstellungFrame()
{
super(); // Default-Konstruktor
importPanel(getCenter_jPanel());
}
/**Aktion - Panel*/
private JPanel getCenter_jPanel() {
if(center_jPanel == null) {
center_jPanel = new JPanel();
BorderLayout AktionPanelLayout = new BorderLayout();
center_jPanel.setLayout(AktionPanelLayout);
center_jPanel.setMaximumSize(new java.awt.Dimension(500, 600));
center_jPanel.add(getTextPane(), BorderLayout.WEST);
getPause();
}
return center_jPanel;
}
}
Hier der Basisframe:
Code:
public class BasisFrame extends javax.swing.JFrame {
// ...
/**
* Initi-Methode
* */
public BasisFrame()
{
super();
initGUI();
}
/**
* Objekte und Methoden dem Frame zufügen,
* Fenstererhalten festlegen
* */
private void initGUI() {
try {
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE );
{ getContentPane().add(getButtonToolbar(),BorderLayout.NORTH);
}
pack();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* Methode zum importieren des Centerpanels
* Das Objekt muss von JPanel abgeleitet sein
* */
public void importPanel(JPanel object)
{
object.setBorder(BorderFactory.createEtchedBorder()); //dezente Umrandung
getContentPane().add(object, BorderLayout.CENTER); //Panel dem Frame Hinzufügen
}
/**
* Buttontoolbar
* */
public ButtonToolBar getButtonToolbar() {
buttonToolbar = new ButtonToolBar();
return buttonToolbar;
}
// ...
}
Und hier die Buttontoolbar:
Code:
public class ButtonToolBar extends javax.swing.JPanel {
/**
* Methode zur Initialisierung des Buttonpanels.
* */
/**
* Konstruktor für das Toolbarpanel
* */
private JToolBar getToolBars_jToolBar() {
if(toolBars_jToolBar == null)
{
toolBars_jToolBar = new JToolBar();
toolBars_jToolBar.add(getDarstellungen_JToolBar());
}
return toolBars_jToolBar;
}
/**
* Darstellungs-Toolbar, beinhaltet standardmäßig die Buttons: xxx
* */
private JToolBar getDarstellungen_JToolBar()
{
darstellungen_JToolBar = new JToolBar();
darstellungen_JToolBar.setLayout(getTb_Layout());
darstellungen_JToolBar.add(getPositionButton());
return darstellungen_JToolBar;
}
private JButton getPositionButton()
{
positionButton = new JButton();
positionButton .addActionListener(getButtonActionListener()); //Actionmethode
return positionButton;
}
/** Actionlistener für ButtonPanel **/
private AbstractAction getButtonActionListener() {
buttonActionListener = new AbstractAction("", null) {
private static final long serialVersionUID = 1L;
public void actionPerformed(ActionEvent evt) {
if(evt.getActionCommand()=="position")
{
//tue was in Klasse Darstellung, aber wie?
}
}
};
return buttonActionListener;
}
}
Das DarstellungsFrame enthält die main-Methode.
Wie gehe ich nun vor, dass die Darstellungklasse mitkriegt, dass positionButton gedrückt wurde und reagiert?
Ich habs auch mal mit na Actionklasse versucht den laufenden Frame zu übergeben(die obige mit dieser ersetzt), aber da scheiter ich auch.
Trotzdem hier mal die Actionklasse:
Code:
public class BasisToolbarAction extends AbstractAction {
private static final long serialVersionUID = 1L;
private LinienDarstellungFrame frame;
public BasisToolbarAction(LinienDarstellungFrame getframe) {
frame = getframe;
}
public void actionPerformed(ActionEvent ev) {
System.out.println(frame.getTitle());
}
}