Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Problem mit Abstract Windowing Toolkit(simples Problem)
ich hab gerade an gefangen mit GUI's zu arbeiten das mit den Buttons und so klappt alles auch ganz gut. Aber in allen Büchern die ich habe steht nirgends drin wie du auf dem GUI Fenster einen Stink normalen Text ausgibst. Ich habs mal mit System.out.printIn versucht das scheint unter awt aber nicht zu funktionieren
oder du zeichnest das ganze auf n Panel, das stellst du dann dar (je nach dem, was du mit dem Text noch alles machen willst .. )
Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class DrawSth extends JFrame {
public DrawSth() {
super("Blupp.");
setSize(425, 150);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
DrawPane sl = new DrawPane();
Container content = getContentPane();
content.add(sl);
setVisible(true);
}
public static void main(String[] arguments) {
new DrawSth();
}
}
//Klasse die von JPanel erbt, darauf zeichnest du dan mit der Methode paintComponent(Graphics g)
class DrawPane extends JPanel {
public void paintComponent(Graphics g) {
Graphics g2 = (Graphics2D)g;
Font f = new Font("Monospaced", Font.BOLD, 18);
FontMetrics fm = getFontMetrics(f);
g2.setFont(f);
String s = "Blupp. Blipp. Blapp.";
int x = (getSize().width - fm.stringWidth(s)) / 2;
int y = getSize().height / 2;
g2.drawString(s, x, y);
}
}
ich hab wohl aufem Schlauch gesessen und sitz immer noch drauf es klappt irgendwie mit dem Label vimmer noch nciht ich weiß auch nicht warum. Ich poste mal den Code
Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class CGUI_Beispiel2 extends Frame {
class CMeinWindowLauscher extends WindowAdapter {
public void windowClosing(WindowEvent e) {
// Das Programm beenden
System.exit(0);
}
}
class CMeinActionLauscher implements ActionListener {
public void actionPerformed(ActionEvent e) {
JPanel contentPane = new JPanel();
JLabel halloLabel = new JLabel("hallo");
contentPane.add(halloLabel);
}
}
CGUI_Beispiel2(String titel) {
super(titel);
// Button Instanzen erzeugen
Button neu = new Button("Neuer Eintrag hinzufügen");
Button edit = new Button("Eintrag editieren");
Button all = new Button("alle Daten ausgeben");
Button tuto = new Button("Tutorial");
Button credits = new Button("Credits") ;
setLayout(new FlowLayout());
add(neu);
add(edit);
add(all);
add(tuto);
add(credits);
addWindowListener(new CMeinWindowLauscher());
neu.addActionListener(new CMeinActionLauscher());
edit.addActionListener(new CMeinActionLauscher());
all.addActionListener(new CMeinActionLauscher());
tuto.addActionListener(new CMeinActionLauscher());
credits .addActionListener(new CMeinActionLauscher());
}
public static void main(String[] args) {
// eine Instanz der Klasse anlegen und anzeigen
Label myLabel = new Label("hallo");
CGUI_Beispiel2 fenster = new CGUI_Beispiel2("GUI mit Event Handling");
fenster.pack();
fenster.setVisible(true);
}
}
ich wil das er den Text hallo aus gibt
JPanel contentPane = new JPanel();
JLabel halloLabel = new JLabel("hallo");
contentPane.add(halloLabel);
1. warum schreibst du vor jeden klassennamen ein C :?
2. warum mischst du awt und swing :?
und 3. musst du dein label auch irgendwann irgendwo auf den frame adden.
1. Du mischst AWT- und Swing-Komponenten. Das sollte man besser nicht tun. Warum? :arrow: FAQ!
2. Zeile 58 entfernen :arrow: ohne Funktion!
3. Wenn du zur Laufzeit ein JLabel zur GUI hinzufügst, muss die GUI bzw. der entsprechende Bereich neu gezeichnet werden.
Lösung: Entweder nach dem Hinzufügen noch ein validate(); in der nächsten Zeile schreiben, oder
das JLabel bei Erzeugen der GUI-Komponenten (also im Konstruktor) gleich mit erzeugen und dabei den parameterlosen Konstruktor des JLabels verwenden. In der actionPerformed()-Methode dann den neuen Text mit halloLabel.setText("hallo"); ins JLabel schreiben.