Moin moin,
ich hab da ein Problem. Ich versuche einen Frame zu proggen, in dem ein Dateimenü oben ist.
In diesem Frame möchte ich ein weiteren Frame mit Scrollbalken.
Wenn ich das angehängte Programm compiliere, spuckt er immer einen Fehler aus.
Generalisierung.java:33: cannot resolve symbol
symbol : constructor JMenuBar (Generalisierung.generalmenu)
location : class javax.swing.JMenuBar
menuleiste = new JMenuBar(new generalmenu());
^
Ich weiß nicht, ob das so geht, wenn ich das Menü in eine extra Klasse schreib.
Ich hatte auch versucht, das Menü mit in der Generalisierungsklasse reinzuhauen.
Da hatte ich aber Probleme beim implementieren vom Adjustment- und ActionListener.
Geht das überhaupt, beide Listener für eine Klasse zu implementieren?
Vielleicht hat ja jemand nen Lösungsvorschlag.
Danke im voraus.
Gruß Happyguck
ich hab da ein Problem. Ich versuche einen Frame zu proggen, in dem ein Dateimenü oben ist.
In diesem Frame möchte ich ein weiteren Frame mit Scrollbalken.
Wenn ich das angehängte Programm compiliere, spuckt er immer einen Fehler aus.
Generalisierung.java:33: cannot resolve symbol
symbol : constructor JMenuBar (Generalisierung.generalmenu)
location : class javax.swing.JMenuBar
menuleiste = new JMenuBar(new generalmenu());
^
Ich weiß nicht, ob das so geht, wenn ich das Menü in eine extra Klasse schreib.
Ich hatte auch versucht, das Menü mit in der Generalisierungsklasse reinzuhauen.
Da hatte ich aber Probleme beim implementieren vom Adjustment- und ActionListener.
Geht das überhaupt, beide Listener für eine Klasse zu implementieren?
Vielleicht hat ja jemand nen Lösungsvorschlag.
Danke im voraus.
Gruß Happyguck
Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.lang.Math.*;
//--------------------Hauptklasse
public class Generalisierung extends JPanel implements AdjustmentListener {
private JScrollPane scroll;
private JMenuBar menuleiste;
public static void main(String[] args) {
JFrame frame = new JFrame("Generalisierung");
frame.getContentPane().add(new Generalisierung());
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
} );
frame.setSize(800,600);
frame.setVisible(true);
}
public Generalisierung(){
setLayout(new BorderLayout());
scroll = new JScrollPane(new Zeichnung());
JScrollBar hor = scroll.getHorizontalScrollBar();
JScrollBar ver = scroll.getVerticalScrollBar();
hor.addAdjustmentListener(this);
ver.addAdjustmentListener(this);
add(scroll);
[b]menuleiste = new JMenuBar(new generalmenu());[/b]
}
public void adjustmentValueChanged(AdjustmentEvent e) {
//Ausgabe der Position der Komponente, die im oberen linken Eckpunkt angezeigt wird
Point p = scroll.getViewport().getViewPosition();
System.out.println("("+p.x+","+p.y+")");
}
//---------------------Klasse Menü-------------------------------------------
class generalmenu extends JMenuBar implements ActionListener
{
public generalmenu()
{
menuleiste.add(projektmenu());
menuleiste.add(koordmenu());
add(menuleiste);
}
//öffentliche methode zur ausgabe des gewählten menüpunktes als text
public void actionPerformed(ActionEvent event)
{
System.out.println(event.getActionCommand());
}
//private methhoden für menü Karte
private JMenu projektmenu()
{
JMenu pro = new JMenu("Projekt"); //anlage obermenü projekt
pro.setMnemonic('P'); //tastenbelegung
JMenuItem mi; //variable für untermenüs
//anlegen
mi = new JMenuItem("Projekt anlegen", 'a');
setCtrlAccelerator(mi, 'A');
mi.addActionListener(this);
pro.add(mi);
//öffnen
mi = new JMenuItem("Projekt öffnen", 'f');
setCtrlAccelerator(mi, 'F');
mi.addActionListener(this);
pro.add(mi);
//Speichern
mi = new JMenuItem("Projekt speichern", 's');
setCtrlAccelerator(mi, 'S');
mi.addActionListener(this);
pro.add(mi);
//Separator
pro.addSeparator();
//Beenden
mi = new JMenuItem("Beenden", 'e');
mi.addActionListener(this);
pro.add(mi);
return pro;
}
private JMenu koordmenu()
{
JMenu koo = new JMenu("Koordinaten");
koo.setMnemonic('K');
JMenuItem mi;
//eingeben
mi = new JMenuItem("eingeben", 'g');
setCtrlAccelerator(mi, 'G');
mi.addActionListener(this);
koo.add(mi);
//einlesen
mi = new JMenuItem("einlesen", 'l');
setCtrlAccelerator(mi, 'L');
mi.addActionListener(this);
koo.add(mi);
//ausgeben
koo.add(ausgabemenu());
return koo;
}
private JMenu ausgabemenu()
{
JMenu koo = new JMenu("ausgeben");
koo.setMnemonic('A');
JMenuItem mi;
//drucker
mi = new JMenuItem("Drucker", 'd');
setCtrlAccelerator(mi, 'D');
mi.addActionListener(this);
koo.add(mi);
//datei
mi = new JMenuItem("Datei", 'a');
setCtrlAccelerator(mi, 'A');
mi.addActionListener(this);
koo.add(mi);
return koo;
}
//private methode zur tastenausführung ohne rückgabewert
private void setCtrlAccelerator(JMenuItem mi, char buchst)
{
KeyStroke ks = KeyStroke.getKeyStroke(
buchst, Event.CTRL_MASK
);
mi.setAccelerator(ks);
}
}
//--------------------Klasse Zeichnung(Fensterinhalt)------------------------
class Zeichnung extends JPanel{
public Zeichnung() {
setBackground(Color.white);
setPreferredSize(new Dimension(1024,780));
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
int k = 11;
int b = 1;
int[] x = {50, 150,150, 175, 175, 225, 225, 250, 250, 225, 225, 300, 300, 225, 225, 175, 100, 100, 50, 50, 150, 150, 50};
int[] y = {50, 50, 25, 25, 50, 50, 75, 75, 125, 125, 175, 175, 200, 200, 225, 225, 210, 225, 225, 150, 150, 100, 100};
g.drawString("Die Anzahl der Koordinaten beträgt: " + x.length, 100, 10);
/*if(((x[1] / k) <= (x[0] / k + 10)) & ((x[1] / k) > (x[0] / k)) ^ ((x[1] / k) >= (x[0] / k - 10) & (x[1] / k) < (x[0] / k)) ^ ((y[1] / k) <= (y[0] / k + 10) & (y[1] / k) > (y[0] / k)) ^((y[1] / k) >= (y[0] / k - 10) & (y[1] / k) < (y[0] / k))) {
g.drawLine(x[0] / k, y[0] / k, x[4] / k, y[4] / k); }
//else g.drawLine(x[0] / k, y[0] / k, x[1] / k, y[1] / k);
/*if(((x[1] / k) <= (x[0] / k + 10)) ^ ((x[1] / k) >= (x[0] / k - 10)) ^ ((y[1] / k) <= (y[0] / k + 10)) ^ ((y[1] / k) >= (y[0] / k - 10))) {
g.drawLine(x[0] / k, y[0] / k, x[4] / k, y[4] / k);
}*/
//else g.drawLine(x[0] / k, y[0] / k, x[1] / k, y[1] / k);
//}
}
}
}[b][/b]