Hallöchen!
Mein Vorhaben:
Ich würde gerne das sich die Hintergrundfarbe von Buttons ändert, wenn man mit der Maus auf denen ist(Hovereffekt), allerdings in einem MVC-Prinzip. Leider komme ich noch nicht so ganz mit dem MVC und Observer in JAVA klar.
Was habe ich hier falsch gemacht, bzw. was fehlt:
Model:
View:
Controller:
main:
Ich danke euch für die Hilfe und wenn es euch nichts ausmacht und ihr kurz Zeit habt, wäre ich auch über eine Erklärung und/oder Tipps sehr dankbar!
LG
Mein Vorhaben:
Ich würde gerne das sich die Hintergrundfarbe von Buttons ändert, wenn man mit der Maus auf denen ist(Hovereffekt), allerdings in einem MVC-Prinzip. Leider komme ich noch nicht so ganz mit dem MVC und Observer in JAVA klar.
Was habe ich hier falsch gemacht, bzw. was fehlt:
Model:
Java:
package model;
import java.awt.Color;
import java.util.Observable;
public class Model extends Observable{
private Color backgroundColor;
private Color ForegroundColor;
public void mouseHoverEffect()
{
this.setColor(Color.WHITE, new Color(200,28,26));
setChanged();
notifyObservers(this);
}
public void setColor(Color backgroundColor, Color ForegroundColor)
{
this.backgroundColor = backgroundColor;
this.ForegroundColor = ForegroundColor;
}
public Color getbackgroundColor()
{
return backgroundColor;
}
public Color getforegroundColor()
{
return ForegroundColor;
}
}
View:
Java:
package view;
import java.awt.BorderLayout;
public class rexxGUI extends JFrame {
/**
* Declarations.
*/
private JPanel contentPane;
private JButton btn_dumps = new JButton("Button1");
private JButton btn_changeCust = new JButton("Button2");
private JButton btn_dblist = new JButton("Button3");
private JButton btn_settings = new JButton("Button4");
public static final String MOUSEOVER = "MOUSEOVER";
/**
* Create the frame.
*/
public rexxGUI() {
setForeground(Color.WHITE);
setBackground(Color.BLACK);
setIconImage(Toolkit.getDefaultToolkit().getImage("*****"));
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setTitle("GUI");
setBounds(100, 100, 276, 184);
contentPane = new JPanel();
contentPane.setBackground(Color.WHITE);
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
GridBagLayout gbl_contentPane = new GridBagLayout();
gbl_contentPane.columnWidths = new int[]{0, 0};
gbl_contentPane.rowHeights = new int[]{0, 0, 0, 0, 0};
gbl_contentPane.columnWeights = new double[]{0.0, Double.MIN_VALUE};
gbl_contentPane.rowWeights = new double[]{0.0, 0.0, 0.0, 0.0, Double.MIN_VALUE};
contentPane.setLayout(gbl_contentPane);
/**
* Buttons Settings
*/
btn_dumps.setFocusPainted(false);
btn_dumps.setActionCommand(rexxGUI.MOUSEOVER);
btn_dumps.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
btn_dumps.setForeground(Color.WHITE);
btn_dumps.setBackground(new Color(200,26,28));
btn_dumps.setPreferredSize(new Dimension(250, 30));
GridBagConstraints gbc_btn_dumps = new GridBagConstraints();
gbc_btn_dumps.insets = new Insets(0, 0, 5, 0);
gbc_btn_dumps.gridx = 0;
gbc_btn_dumps.gridy = 0;
contentPane.add(btn_dumps, gbc_btn_dumps);
btn_changeCust.setFocusPainted(false);
btn_changeCust.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
btn_changeCust.setForeground(Color.WHITE);
btn_changeCust.setBackground(new Color(200,26,28));
btn_changeCust.setPreferredSize(new Dimension(250, 30));
GridBagConstraints gbc_btn_changeCust = new GridBagConstraints();
gbc_btn_changeCust.insets = new Insets(0, 0, 5, 0);
gbc_btn_changeCust.gridx = 0;
gbc_btn_changeCust.gridy = 1;
contentPane.add(btn_changeCust, gbc_btn_changeCust);
btn_dblist.setFocusPainted(false);
btn_dblist.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
btn_dblist.setForeground(Color.WHITE);
btn_dblist.setBackground(new Color(200,26,28));
btn_dblist.setPreferredSize(new Dimension(250, 30));
GridBagConstraints gbc_btn_dblist = new GridBagConstraints();
gbc_btn_dblist.insets = new Insets(0, 0, 5, 0);
gbc_btn_dblist.gridx = 0;
gbc_btn_dblist.gridy = 2;
contentPane.add(btn_dblist, gbc_btn_dblist);
btn_settings.setFocusPainted(false);
btn_settings.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
btn_settings.setForeground(Color.WHITE);
btn_settings.setBackground(new Color(200,26,28));
btn_settings.setPreferredSize(new Dimension(250, 30));
GridBagConstraints gbc_btn_settings = new GridBagConstraints();
gbc_btn_settings.insets = new Insets(0, 0, 5, 0);
gbc_btn_settings.gridx = 0;
gbc_btn_settings.gridy = 3;
contentPane.add(btn_settings, gbc_btn_settings);
}
/**
* get Buttons
*/
public JButton getBtn_dumps() {
return btn_dumps;
}
public JButton getBtn_changeCust() {
return btn_changeCust;
}
public JButton getBtn_dblist() {
return btn_dblist;
}
public JButton getBtn_settings() {
return btn_settings;
}
}
Controller:
Java:
package controller;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Observable;
import java.util.Observer;
import view.rexxGUI;
import model.Model;
public class controller implements Observer, ActionListener{
private Model model;
private rexxGUI view;
public controller(Model model, rexxGUI view)
{
this.model = model;
this.view = view;
model.addObserver(this);
view.getBtn_dumps().addActionListener(this);
}
@Override
public void actionPerformed(ActionEvent ae) {
switch (ae.getActionCommand())
{
case rexxGUI.MOUSEOVER:
model.mouseHoverEffect();
break;
}
}
@Override
public void update(Observable arg0, Object arg1) {
if(arg1 instanceof Model)
{
view.getBtn_dumps().setBackground(((Model)arg1).getbackgroundColor());
view.getBtn_dumps().setForeground(((Model)arg1).getforegroundColor());
}
}
}
main:
Java:
package main;
import java.awt.EventQueue;
import view.rexxGUI;
public class main {
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
rexxGUI main = new rexxGUI();
main.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
}
Ich danke euch für die Hilfe und wenn es euch nichts ausmacht und ihr kurz Zeit habt, wäre ich auch über eine Erklärung und/oder Tipps sehr dankbar!
LG