Hallo
Ich habe eine Programm mit einigen Buttons und einem Hintergrundbild geschrieben. Beim Starten wird das Hintergrundbild angezeigt, die Buttons erscheinen jedoch erst wenn man mit der Maus über ihre Position fährt. Der Code ist ziemlich lang, hier die wichtigsten Stellen bei denen es vermutlich liegt:
Hier die Main in dieser Klasse wird das Programm gestartet
Hier die Klasse CreateWnd (cw) hier wird das Fenster erstellt
Hier die CreateObj (co) hier werden die Buttons erstellt
Ich weiss ist ziemlich viel code, ich wär jedoch sehr dankbar falls sich wer die Mühe macht und mir hilft, hab schon einiges probiert und hatte bisher keinen Erfolg. Ich vermute das es mit der Reihenfolge des Erstellens zusammenhängt.
mfg[/code][/quote]
Ich habe eine Programm mit einigen Buttons und einem Hintergrundbild geschrieben. Beim Starten wird das Hintergrundbild angezeigt, die Buttons erscheinen jedoch erst wenn man mit der Maus über ihre Position fährt. Der Code ist ziemlich lang, hier die wichtigsten Stellen bei denen es vermutlich liegt:
Hier die Main in dieser Klasse wird das Programm gestartet
Code:
public static void main(String[] args) {
Main.getM().cw.CreateBack("ArmCalc", new Rectangle(0, 0, 300, 300),
false);
Main.getM().co.createBtn();
Main.getM().co.createTf();
}
Hier die Klasse CreateWnd (cw) hier wird das Fenster erstellt
Code:
class CreateWnd extends JFrame {
JFrame wnd = new JFrame();
public void CreateBack(String s, Rectangle r, boolean b) {
wnd.add(new GUI_MyJPanel("/home/arm/background.png"));
wnd.setBounds(r);
wnd.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
wnd.setTitle(s);
wnd.setVisible(true);
wnd.setResizable(b);
}
class GUI_MyJPanel extends JPanel {
private Image image;
public GUI_MyJPanel() {
}
public GUI_MyJPanel(Image file) {
image = file;
repaint();
}
public GUI_MyJPanel(String file) {
this(new ImageIcon(file).getImage());
}
public GUI_MyJPanel(File file) {
this(file.toString());
}
public void paintComponent(Graphics g) {
if (image != null) {
g.drawImage(image, 0, 0, 285, 270, null);
System.out.println("test");
}
}
}
Code:
private JTextField t1 = new JTextField();
private JPanel num = new JPanel();
private JPanel tf = new JPanel();
private JPanel prim = new JPanel();
private JPanel sec = new JPanel();
private JPanel clr = new JPanel();
private GetInput l1 = new GetInput();
public void createBtn() {
Runnable createNumBtn = new Runnable() {
@Override
public void run() {
int x = Main.getM().getCw().getWnd().getWidth() / 3, y = 30, sx = 30, sy = 30, ix = sx + 1, iy = sy + 1;
setPan(num, 0, 0, 300, 300, null);
Main.getM().getCw().getWnd().getContentPane().add(num);
JButton b1 = new JButton("1");
num.add(b1);
setBtn(b1, x, y, sx, sy, Color.blue);
JButton b2 = new JButton("2");
num.add(b2);
setBtn(b2, x += ix, y, sx, sy, Color.blue);
JButton b3 = new JButton("3");
num.add(b3);
setBtn(b3, x += ix, y, sx, sy, Color.blue);
JButton b4 = new JButton("4");
num.add(b4);
setBtn(b4, x = (x - 2 * ix), y += iy, sx, sy, Color.blue);
JButton b5 = new JButton("5");
num.add(b5);
setBtn(b5, x += ix, y, sx, sy, Color.blue);
JButton b6 = new JButton("6");
num.add(b6);
setBtn(b6, x += ix, y, sx, sy, Color.blue);
JButton b7 = new JButton("7");
num.add(b7);
setBtn(b7, x = (x - 2 * ix), y += iy, sx, sy, Color.blue);
JButton b8 = new JButton("8");
num.add(b8);
setBtn(b8, x += ix, y, sx, sy, Color.blue);
JButton b9 = new JButton("9");
num.add(b9);
setBtn(b9, x += ix, y, sx, sy, Color.blue);
JButton b0 = new JButton("0");
num.add(b0);
setBtn(b0, x = (x - 2 * ix) + ix, y += iy, sx, sy, Color.blue);
}
};
Runnable createPrimBtn = new Runnable() {
@Override
public void run() {
int x = (Main.getM().getCw().getWnd().getWidth() / 10) * 8, y = 30, sx = 30, sy = 30, ix = sx + 1, iy = sy + 1;
setPan(prim, 0, 0, 300, 300, null);
Main.getM().getCw().getWnd().getContentPane().add(prim);
JButton bPlu = new JButton("+");
prim.add(bPlu);
setBtn(bPlu, x, y += iy, sx, sy, Color.red);
JButton bMin = new JButton("-");
prim.add(bMin);
setBtn(bMin, x, y += iy, sx, sy, Color.red);
JButton bMul = new JButton("*");
prim.add(bMul);
setBtn(bMul, x -= 10, y += iy, sx, sy, Color.red);
JButton bDiv = new JButton("/");
prim.add(bDiv);
setBtn(bDiv, x -= 10, y += iy, sx, sy, Color.red);
JButton bPow = new JButton("^");
prim.add(bPow);
setBtn(bPow, x -= 10, y += ix, sx, sy, Color.red);
JButton bKom = new JButton(",");
prim.add(bKom);
setBtn(bKom, x -= ix, y += 10, sx, sy, Color.red);
JButton bVz = new JButton("+-");
prim.add(bVz);
setBtn(bVz, x -= ix, y -= 10, sx, sy, Color.red);
JButton bIs = new JButton("=");
prim.add(bIs);
setBtn(bIs, x -= ix, y -= 10, sx, sy, Color.red);
}
};
Runnable createSecBtn = new Runnable() {
@Override
public void run() {
int x = (Main.getM().getCw().getWnd().getWidth() / 20), y = 150, sx = 30, sy = 30, ix = sx + 1, iy = sy + 1;
setPan(sec, 0, 0, 300, 300, null);
Main.getM().getCw().getWnd().getContentPane().add(sec);
JButton bsin = new JButton("sin");
sec.add(bsin);
setBtn(bsin, x, y += iy, sx, sy, Color.orange);
JButton bcos = new JButton("cos");
sec.add(bcos);
setBtn(bcos, x += 10, y += iy, sx, sy, Color.orange);
JButton btan = new JButton("tan");
sec.add(btan);
setBtn(btan, x += ix, y += 10, sx, sy, Color.orange);
JButton brt = new JButton("srt");
sec.add(brt);
setBtn(brt, x += ix, y += 10, sx, sy, Color.orange);
JButton bkrw = new JButton("1/x");
sec.add(bkrw);
setBtn(bkrw, x += ix, y, sx, sy, Color.orange);
JButton bpi = new JButton("Pi");
sec.add(bpi);
setBtn(bpi, x += ix, y, sx, sy, Color.orange);
}
};
Runnable createClrBtn = new Runnable() {
@Override
public void run() {
int x = (Main.getM().getCw().getWnd().getWidth() / 6), y = 60, sx = 30, sy = 30, iy = sy + 1;
setPan(clr, 0, 0, 300, 300, null);
Main.getM().getCw().getWnd().getContentPane().add(clr);
JButton bCLR = new JButton("CLR");
clr.add(bCLR);
setBtn(bCLR, x, y += iy, sx, sy, Color.magenta);
JButton bCE = new JButton("CE");
clr.add(bCE);
setBtn(bCE, x += 10, y += iy, sx, sy, Color.magenta);
JButton bC = new JButton("C");
clr.add(bC);
setBtn(bC, x += 10, y += iy, sx, sy, Color.magenta);
}
};
SwingUtilities.invokeLater(createPrimBtn);
SwingUtilities.invokeLater(createNumBtn);
SwingUtilities.invokeLater(createSecBtn);
SwingUtilities.invokeLater(createClrBtn);
}
void createTf() {
Runnable createTf = new Runnable() {
@Override
public void run() {
setPan(tf, 0, 0, 300, 300, null);
tf.add(t1);
Main.getM().getCw().getWnd().add(tf);
setTf(t1, 0, 0, 300, 25, null);
}
};
SwingUtilities.invokeLater(createTf);
}
void setBtn(JButton btn, int x, int y, int sx, int sy, Color fg) {
btn.setBounds(x, y, sx, sy);
btn.addActionListener(l1);
btn.setForeground(fg);
btn.setMargin(new Insets(0, 0, 0, 0));
btn.setVisible(true);
}
void setPan(JPanel pan, int x, int y, int sx, int sy, LayoutManager layout) {
pan.setLayout(layout);
pan.setBounds(x, y, sx, sy);
}
void setTf(JTextField t, int x, int y, int sx, int sy, LayoutManager layout) {
t.setLayout(layout);
t.setBounds(x, y, sx, sy);
}
Ich weiss ist ziemlich viel code, ich wär jedoch sehr dankbar falls sich wer die Mühe macht und mir hilft, hab schon einiges probiert und hatte bisher keinen Erfolg. Ich vermute das es mit der Reihenfolge des Erstellens zusammenhängt.
mfg[/code][/quote]