EDIT
Ach shit sorry Leute, ich hab veraltete Versionen der Klassen genutzt. Aber ich schieb gleich mal ne andere Frage rein: Wenn ich ein Projekt habe, in dem allerhand nützlicher Klassen sind, und ich möchte dass andere Projekte diese Bibliotheken nutzen, wie mache ich das am besten? Ich habs jetzt als Jar exportiert und in mein anderes Projekt eingefügt. Aber wenn ich jetzt daran was ändern will, muss ich es wieder exportieren und wieder einfügen. Sonst hab ich ne alte Version, und das war hier ja auch grad mein Denkfehler. Aber das ist ja recht umständlich...
Kann ich es irgendwie einstellen dass mein Projekt immer die aktuelle Version eines anderen Projektes nimmt? Am besten dass er beim Build immer das andere Projekt zuerst kompiliert und danach mit reinpackt... Das er quasi beim Compilen automatisch die Referenzierte Bibltiothek neu compiled.
Hi, ich bekomme ne NPE wie folgt:
dieses .access$1 heisst scheinbar, dass er denkt ein Objekt sei schon instantiiert, obwohl es das nicht ist?! Sagte mir Google.
Also was ich nicht verstehe ist, wie er überhaupt auf die Idee kommt, die Methode "setLockedLook" aufzurufen. Das ist schwarze Magie, weil ich mach das nicht. Hier die Klasse:
Mein Programm:
...bin ich jetzt doof ???:L
Ach shit sorry Leute, ich hab veraltete Versionen der Klassen genutzt. Aber ich schieb gleich mal ne andere Frage rein: Wenn ich ein Projekt habe, in dem allerhand nützlicher Klassen sind, und ich möchte dass andere Projekte diese Bibliotheken nutzen, wie mache ich das am besten? Ich habs jetzt als Jar exportiert und in mein anderes Projekt eingefügt. Aber wenn ich jetzt daran was ändern will, muss ich es wieder exportieren und wieder einfügen. Sonst hab ich ne alte Version, und das war hier ja auch grad mein Denkfehler. Aber das ist ja recht umständlich...
Kann ich es irgendwie einstellen dass mein Projekt immer die aktuelle Version eines anderen Projektes nimmt? Am besten dass er beim Build immer das andere Projekt zuerst kompiliert und danach mit reinpackt... Das er quasi beim Compilen automatisch die Referenzierte Bibltiothek neu compiled.
Hi, ich bekomme ne NPE wie folgt:
Exception in thread "main" java.lang.NullPointerException
at de.klutsch.utilities.gui.LockableJFrame$LockPane.access$1(LockableJFrame.java:80)
at de.klutsch.utilities.gui.LockableJFrame.setLockedLook(LockableJFrame.java:68)
at de.klutsch.utilities.gui.LockableJFrame$LockPane.<init>(LockableJFrame.java:89)
at de.klutsch.utilities.gui.LockableJFrame.setupGlassPane(LockableJFrame.java:43)
at de.klutsch.utilities.gui.LockableJFrame.<init>(LockableJFrame.java:29)
at MyFrame.<init>(MyFrame.java:6)
at MyFrame.main(MyFrame.java:9)
dieses .access$1 heisst scheinbar, dass er denkt ein Objekt sei schon instantiiert, obwohl es das nicht ist?! Sagte mir Google.
Also was ich nicht verstehe ist, wie er überhaupt auf die Idee kommt, die Methode "setLockedLook" aufzurufen. Das ist schwarze Magie, weil ich mach das nicht. Hier die Klasse:
Java:
package de.klutsch.utilities.gui;
import java.awt.Color;
import java.awt.Cursor;
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics;
import java.awt.GraphicsConfiguration;
import java.awt.Point;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;
import javax.swing.JPanel;
/**
*
* @author Thomas Klutsch 02.12.2009 A JFrame that can be locked/unlocked. The
* frame does not react on any user interaction in locked state, i.e.
* you cannot use components within the frame, nor resize or move it.
* During locked state, a semi-transparent glass pane is laid above the
* whole frame, optionally also displaying a message.
*/
public class LockableJFrame extends JFrame {
private LockPane lockPane;
public LockableJFrame() {
super();
setupGlassPane();
}
public LockableJFrame(String title) {
super(title);
setupGlassPane();
}
public LockableJFrame(String title, GraphicsConfiguration gc) {
super(title, gc);
setupGlassPane();
}
private void setupGlassPane() {
lockPane = new LockPane();
setGlassPane(lockPane);
}
public void lock() {
lock(null);
}
public void lock(String msg) {
setEnabled(false);
setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
lockPane.msg = msg;
lockPane.setVisible(true);
lockPane.requestFocusInWindow();
}
public void unlock() {
lockPane.setVisible(false);
setCursor(Cursor.getDefaultCursor());
requestFocus();
setEnabled(true);
}
public void setLockedLook(Font msgFont, Color msgColor,
Color backgroundColor) {
lockPane.msgFont = msgFont;
lockPane.msgColor = msgColor;
int red = backgroundColor.getRed();
int green = backgroundColor.getGreen();
int blue = backgroundColor.getBlue();
lockPane.backgroundColor = new Color(red, green, blue, 150);
lockPane.boxBackgroundColor = new Color(red, green, blue, 200);
}
private class LockPane extends JPanel implements KeyListener {
private String msg;
private Font msgFont;
private Color msgColor;
private Color backgroundColor;
private Color boxBackgroundColor;
public LockPane() {
setOpaque(false);
setFocusTraversalKeysEnabled(false);
addKeyListener(this);
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
int width = getWidth();
int height = getHeight();
g.setColor(backgroundColor);
g.fillRect(0, 0, width, height);
if (msg != null && !msg.trim().isEmpty()) {
// calculate positions
g.setFont(msgFont);
FontMetrics m = g.getFontMetrics();
Point msgCenter = StringCentering.getCenter(msg, m, width,
height);
int msgToBoxGap = 10;
Point boxPos = new Point(msgCenter.x - msgToBoxGap, msgCenter.y
- m.getAscent() - msgToBoxGap);
int stringWidth = m.stringWidth(msg);
int stringHeight = m.getHeight();
// draw message box
g.setColor(boxBackgroundColor);
g.fillRoundRect(boxPos.x, boxPos.y, stringWidth + msgToBoxGap,
stringHeight + msgToBoxGap, 10, 10);
g.setColor(msgColor);
g.drawRoundRect(boxPos.x, boxPos.y, stringWidth + msgToBoxGap,
stringHeight + msgToBoxGap, 10, 10);
// draw message text
g.setColor(msgColor);
g.drawString(msg, msgCenter.x, msgCenter.y);
}
}
@Override
public void keyPressed(KeyEvent e) {
e.consume();
}
@Override
public void keyReleased(KeyEvent e) {
e.consume();
}
@Override
public void keyTyped(KeyEvent e) {
e.consume();
}
}
}
Mein Programm:
Java:
public class MyFrame extends LockableJFrame{
public static void main(String[] args) {
MyFrame f= new MyFrame();
}
}
...bin ich jetzt doof ???:L
Zuletzt bearbeitet: