Hallo,
mal sehen ob ich hierfür virtuelle Schläge bekomme:
Ich versuche gerade, mir eine kleine "Library" zu machen, um meine JFrames nicht immer selbst dekorieren zu müssen. Hier ist mein Versuch bis jetzt:
Class PFrame:
Class PPanel:
Class PButton:
So, nun komme ich aber zum Punkt: Beim Hinzufügen des Buttons wird das Programm seeeeeehr langsam, es hängt sich sogar teilweise auf.
Ich muss gestehen, dass ich da keine Ursache dafür drin sehen kann. Nichts wird doppelt und dreifach "genewed", also instanziert etc.
Vielleicht findet ja einer von euch einen Fehler im Code (da werden wahrscheinlich viele sein..)
Danke für jede Antwort.
mal sehen ob ich hierfür virtuelle Schläge bekomme:
Ich versuche gerade, mir eine kleine "Library" zu machen, um meine JFrames nicht immer selbst dekorieren zu müssen. Hier ist mein Versuch bis jetzt:
Class PFrame:
Java:
package com.frame;
import javax.swing.*;
import java.awt.*;
import com.GUI.*;
/**
* Class PFrame generates a Swing-based window containing a JPanel.
*
*/
public class PFrame extends JFrame {
private static final long serialVersionUID = 1L;
private PPanel ppanel;
public PFrame (int width, int height){
setSize(width, height);
ppanel = new PPanel(width,height,null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public PFrame (int width, int height, Image imgi){
setSize(width, height);
if(imgi == null){
ppanel = new PPanel(width,height,null);
}else{
ppanel = new PPanel(width,height,imgi);
}
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
/**
* This method returns the PFrame's PPanel.
* @return PPanel ppanel
*/
public PPanel getPPanel(){
return ppanel;
}
/**
* This method adds the jpanel with all linked components to the PFrame.
*/
public void finish(){
this.add(ppanel);
}
//Einfach nur, damit ich "debuggen" kann....
public static void main(String[] args){
Image img = new ImageIcon("C:/Users/Marius/Pictures/EditorButton.png").getImage();
PFrame p = new PFrame(300,150,img);
ImageIcon img2 = new ImageIcon("C:/Users/Marius/Pictures/EditorButton.png");
p.getPPanel().add(new PButton(img2,20,20));
p.finish();
p.setVisible(true);
}
}
Java:
package com.frame;
import javax.swing.*;
import java.awt.*;
public class PPanel extends JPanel implements Runnable {
private static final long serialVersionUID = 1L;
private Thread t;
private Image image;
/**
* Construcs a JPanel with default black background if parameter image is set to null.
* @param width -width of the PPanel
* @param height -height of the PPanel
* @param image -image to display
*/
public PPanel(int width, int height, Image image){
this.image = image;
setSize(width,height);
setLayout(null);
t = new Thread(this);
t.start();
}
/* (non-Javadoc)
* @see java.lang.Runnable#run()
*/
public void run(){
while(true){
repaint();
}
}
public void paintComponent(Graphics g){
super.paintComponent(g);
if(image == null){
g.setColor(Color.BLACK);
g.fillRect(0, 0, getWidth(), getHeight());
}else{
g.drawImage(image,0,0,getWidth(),getHeight(),null);
}
}
}
Java:
package com.GUI;
import java.awt.*;
import javax.swing.*;
public class PButton extends JButton {
private static final long serialVersionUID = 1L;
public PButton(String title, int x, int y, int width, int height){
setText(title);
setLocation(x,y);
setBackground(Color.BLACK);
setForeground(Color.WHITE);
setSize(width,height);
}
public PButton(ImageIcon image, int x, int y){
setIcon(image);
setLocation(x,y);
setSize(image.getIconWidth(),image.getIconHeight());
}
}
So, nun komme ich aber zum Punkt: Beim Hinzufügen des Buttons wird das Programm seeeeeehr langsam, es hängt sich sogar teilweise auf.
Ich muss gestehen, dass ich da keine Ursache dafür drin sehen kann. Nichts wird doppelt und dreifach "genewed", also instanziert etc.
Vielleicht findet ja einer von euch einen Fehler im Code (da werden wahrscheinlich viele sein..)
Danke für jede Antwort.