H
Hasorko
Gast
Also ich versuche in einem Panel (kSortierer), der in einem ScrollPane (scrollPane1) liegt, eine Linie zu zeichnen.
Dann kommen die Buttons. Und im Button verbinde soll der dann zwei Labels mit einer Linie verbinden. Die Koordinaten dafür werden auch im Button verbinde berechnet.
So und nun noch meine paint methode.
So also mein Programm is ausführbar und die Koordinaten stimmen.
Aber gezeichnet wird net. Und die paint methode wird auch nur ausgeführt wenn ich das Fenster minimiere und wieder amximiere. Liegt wohl an repaint. Also warum zeichnet er nicht und was kanni machen das ich fenster net verkleinern muss und dann wieder vergrößern?!
P.S. Entschuldigt das es nur so wenige Kommentare gibt und das ich nicht Objekt orientiert Programmiere, aber ich will das es läuft plz help! ^^
MFG Hasorko
Code:
public Try1(String title) {
// Frame-Initialisierung
super(title);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent evt) { System.exit(0); }
});
int frameWidth = 1010;
int frameHeight = 560;
setSize(frameWidth, frameHeight);
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
int x = (d.width - getSize().width) / 2;
int y = (d.height - getSize().height) / 2;
setLocation(x, y);
Panel cp = new Panel(null);
add(cp);
kSortierer.setBounds(0, 0, 10000, 10000);
scrollPane1.add(kSortierer);
// Anfang Komponenten
scrollPane1.setBounds(0, 0, 1000, 480);
cp.add(scrollPane1);
zweierSortierer.setBounds(56, 490, 75, 25);
zweierSortierer.setLabel("2er Sortierer");
zweierSortierer.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
zweierSortierer_ActionPerformed(evt);
}
});
zweierSortierer.disable();
cp.add(zweierSortierer);
dreierSortierer.setBounds(152, 490, 75, 25);
dreierSortierer.setLabel("3er Sortierer");
dreierSortierer.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
dreierSortierer_ActionPerformed(evt);
}
});
dreierSortierer.disable();
cp.add(dreierSortierer);
textField1.setBounds(240, 490, 89, 24);
textField1.setText("");
cp.add(textField1);
eingaenge.setBounds(344, 490, 97, 25);
eingaenge.setLabel("Eingänge");
eingaenge.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
eingaenge_ActionPerformed(evt);
}
});
cp.add(eingaenge);
verbinde.setBounds(530, 490, 75, 25);
verbinde.setLabel("Verbinden");
verbinde.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
verbinde_ActionPerformed(evt);
}
});
cp.add(verbinde);
kSortierer.addMouseListener(this);
setResizable(false);
setVisible(true);
// Ende Komponenten
}
Dann kommen die Buttons. Und im Button verbinde soll der dann zwei Labels mit einer Linie verbinden. Die Koordinaten dafür werden auch im Button verbinde berechnet.
Code:
public void verbinde_ActionPerformed(ActionEvent evt) {
if (zaehl == 2) {
int anforderung=0;
xObjekt1 = objekte[0].getX();
yObjekt1 = objekte[0].getY();
xObjekt2 = objekte[1].getX();
yObjekt2 = objekte[1].getY();
System.out.println("Ich verbinde " + labelBezeichner[0] + " mit " + labelBezeichner[1]);
labelEingaenge[laengeList] = labelBezeichner[1];
labelAusgaenge[laengeList] = labelBezeichner[0];
int eingaenge=0;
for (int i=0; i<laengeList; i++){
if (labelBezeichner[1]==labelEingaenge[i]){
eingaenge++;
}
}
int ausgaenge=0;
for (int i=0; i<laengeList; i++){
if (labelBezeichner[0]==labelAusgaenge[i]){
ausgaenge++;
}
}
laengeList++;
if ((labelArt[0]==1) && (ausgaenge<1)){
System.out.println("Eingang nicht voll");
anforderung++;
}
if ((labelArt[0]==2) && (ausgaenge<2)){
System.out.println("2er noch nicht voll");
anforderung++;
}
if ((labelArt[0]==3) && (ausgaenge<3)){
System.out.println("3er noch nicht voll");
anforderung++;
}
if ((labelArt[1]==2) && (eingaenge<2)){
System.out.println("2er noch nicht voll");
anforderung++;
}
if ((labelArt[1]==3) && (eingaenge<3)){
System.out.println("3er noch nicht voll");
anforderung++;
}
if (anforderung==2){
zahlEingaenge = eingaenge;
zahlAusgaenge = ausgaenge;
System.out.println("zahlEingaenge " + zahlEingaenge);
System.out.println("zahlAusgaenge " + zahlAusgaenge);
kSortierer.repaint();
}
}
zaehl=0;
}
So und nun noch meine paint methode.
Code:
public void paint(Graphics stift){
stift.setColor(Color.black);
if ((labelArt[0]==1) && (zahlEingaenge == 0)){
xObjekt1 = xObjekt1+70;
yObjekt1 = yObjekt1+8;
stift.drawLine(xObjekt1, yObjekt1, xObjekt2, yObjekt2);
}
}
So also mein Programm is ausführbar und die Koordinaten stimmen.
Aber gezeichnet wird net. Und die paint methode wird auch nur ausgeführt wenn ich das Fenster minimiere und wieder amximiere. Liegt wohl an repaint. Also warum zeichnet er nicht und was kanni machen das ich fenster net verkleinern muss und dann wieder vergrößern?!
P.S. Entschuldigt das es nur so wenige Kommentare gibt und das ich nicht Objekt orientiert Programmiere, aber ich will das es läuft plz help! ^^
MFG Hasorko