Portal > Foren > Java > Desktop-Applikationen und Grafik > JComponents nicht angezeigt
Antwort
 
Themen-Optionen Thema durchsuchen
Alt 23.11.2005, 02:23 Nach oben    #1
Patterchen
Gast
 
Beiträge: n/a
Standard JComponents nicht angezeigt

Hallo,
ich habe mir ein kleines Programm erstellt. Die Gui baut auf JFrames.... auf. Nun stellt sich mir die Frage, warum komponenten die ich später als das eigentliche Frame auf der Oberfläche erscheinen lasse (durch eine Methode) nicht angezeigt werden.
Minimiere ich das fentser aber und mache es wieder groß sind alle Komponenten da:confused: :confused: :confused:

Habe leider keine Erklärung dafür- aber ihr bestimmt.
 
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 23.11.2005, 07:51 Nach oben    #2
Erfahrener Benutzer
 
Registriert seit: 02.02.2005
Beiträge: 557
Standard

Ja, weil du das Panel ja noch neuzeichnen musst.

validate() ist hier dein Freund. Einfach aufrufen wenn sich was an der GUI geändert hat.
Gottzilla ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 23.11.2005, 16:49 Nach oben    #3
Patterchen
Gast
 
Beiträge: n/a
Standard

Mhhh blöd. habs versucht. Ist aber immer noch etwas unwillig.

Liegt das an meinem (zugegeben nicht sehr professionellen) code?

Code:
 
class Ausgabefenster
{
main() { Frame f, darauf ein Label l(als Hintergrund), darauf Button. wenn Button gedrückt wird sollen mehrere Textfelder erscheinen.}
 .........						  
private Textfelderfunktion() { Hier sind die Textfelder drin und werden schon auf l.add(textfeld) gesetzt.}
 ......
listener(){handelt wenn Button gedrückt wird und ruft Textfelderfunktion() auf}
}
Hab das validate() bei sämtlichen Komponenten und in allen erdenklichen Kombinationen probiert, aber es hakt. Mache bestimmt was falsch und versteh meinen code net......
 
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 23.11.2005, 18:03 Nach oben    #4
Erfahrener Benutzer
 
Registriert seit: 02.02.2005
Beiträge: 557
Standard

in ganz extremen (und seltenen) Fällen brauchst auch noch nen repaint() hinterher. Ansonsten post mal ein wenig mehr Code.
Gottzilla ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 23.11.2005, 18:12 Nach oben    #5
Erfahrener Benutzer
 
Registriert seit: 28.08.2004
Ort: konstanz am bodensee
Beiträge: 190
Standard

ich auch nicht... vieleicht solltest du mal den gesamten quellcode posten
beny_mcde ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 24.11.2005, 02:16 Nach oben    #6
Patterchen
Gast
 
Beiträge: n/a
Standard

ok, dann mal den code (nicht erschrecken, ist viel und unübersichtich!)
Aber mir ist noch was viel schlimmeres aufgefallen. wenn ich die db-abfrage das zweite mal mache wird in der tabell alles korrekt angezeigt. ändere ich dann jedoch die spaltenbreite manuel mit der maus erscheinen wieder die daten der ersten abfrage in der tabelle!?!
hat das auch mit dem validate() usw. zu tun???

Danke im Voraus schonmal


Meine GUI
[code]
import java.awt.*;
import java.awt.event.*;
import java.util.Vector;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
/**
* Die Klasse AusgabefensterGui entwirft eine GUI um die Abfrage für den
* Benutzer so angenehm wie möglich zu machen.
* @author eczernot
*
*/
public class AusgabefensterGui extends JFrame implements ActionListener, ItemListener{

private static final long serialVersionUID = 1L;

/**
* Variablen anderes Klassen
*/
Datenbank datenBank;
Ausgabefenster ausgabeFenster;
LoginGui lg;
Login login;
Balkendiagramm balken;
/**
* normale Variablen
*/
String user;
String einoderaus;
String datumAnfang;
String datumEnde;
String kat;
String wdh;
String[] kombi;

/**
* Variablen für die Oberflächengestaltung
*/
private JTextField t, neuBeschr, neuBtrag, neuDatum;
private final Container c1;
private final Container c2;
private final Container c3;
private final JFrame fr;

/**
* Constructor
* @param ausgabeFenster
*/
public AusgabefensterGui(Ausgabefenster ausgabeFenster)
{
this.ausgabeFenster = ausgabeFenster;



fr = new JFrame("Ausgabefenster");

fr.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOS E);
fr.setResizable(false);
fr.setSize(800,600);

Dimension d = Toolkit.getDefaultToolkit().getScreenSize();

fr.setLocation((d.width- fr.getSize().width ) / 2,
(d.height- fr.getSize().height) / 2 );


// ---------------------------------------------------------------------

// c1: Linke Frameseite mit Abfragekriterien:
c1=fr.getContentPane();
c1.setLayout(null);
c1.setSize(300,600);
c1.setLocation(0,0);

// Hintergrund einbinden
ImageIcon hintergrund1 = new ImageIcon("bilder/1.jpg");
JLabel hlabel1 = new JLabel(hintergrund1);
hlabel1.setSize(300, 600);
hlabel1.setLocation(0,0);
c1.add(hlabel1);

// c2: Rechts oben: Platz für Grafik der ausgelesenen Daten:
c2 =fr.getContentPane();
c2.setLayout(null);
c2.setSize(500,300);
c2.setLocation(300,0);

// Hintergrund für c2:
ImageIcon hintergrund2 = new ImageIcon("bilder/2.jpg");
JLabel hlabel2 = new JLabel(hintergrund2);
hlabel2.setSize(500, 300);
hlabel2.setLocation(300,0);
c2.add(hlabel2);

// c3: Rechts unten:Tabelle um abgefragte Daten darzustellen
c3 =fr.getContentPane();
c3.setLayout(null);
c3.setSize(500,300);
c3.setLocation(300,300);

// ---------------------------------------------------------------------
// Label auf Hintergrund auf Frame
JLabel katlabel = new JLabel();
katlabel.setSize(275, 50);
katlabel.setLocation(25,10);
katlabel.setText("Bitte Kategorie auswählen...");
hlabel1.add(katlabel);


// Startbutton um Abfrage auf DB zu starten
JButton b1 = new JButton("Abfragen");
b1.setSize(100,50);
b1.setLocation(25,170);
b1.setBackground(Color.WHITE);
hlabel1.add(b1);
b1.addActionListener(this);
);

fr.setVisible(true);
}

........versch. get und setMethoden

public void diagrammDatenAufbereitung()
{
datenBank = new Datenbank();
datenBank.diagrammDaten();

JLabel labelbd = new JLabel();
balken = new Balkendiagramm();


labelbd = balken.create(kombi);
c2.add(labelbd);


};


public void tabellenDatenAufbereitung() {

kat = getkat();
einoderaus = einoderaus();
//user = benutzerAngemeldet();

//System.out.println("KAtegorie aus der Klasse:" + user);

Vector vec = new Vector();

vec = datenBank.ausgabefunktion(kat, einoderaus);
System.out.println("Wieder in der GUI");

Vector columnNames = new Vector();
columnNames.addElement("Nummer");
columnNames.addElement("Kategorie");
columnNames.addElement("Beschreibung");
columnNames.addElement("Betrag");
columnNames.addElement("Periode");
columnNames.addElement("Datum");

DefaultTableModel tabMod = new DefaultTableModel(vec,columnNames);
JTable table = new JTable(tabMod);

table.getTableHeader().setReorderingAllowed(false) ;
table.enable(false);
JScrollPane scrollPane = new JScrollPane(table);
scrollPane.setSize(495,277);
scrollPane.setLocation(300,300);

c3.add( scrollPane );
}



public void loeschen()
{
ImageIcon hintergrund1 = new ImageIcon("bilder/1.jpg");
JLabel hlabel1 = new JLabel(hintergrund1);
hlabel1.setSize(300, 600);
hlabel1.setLocation(0,0);
c1.add(hlabel1);

// ------------------------------------------------------------------------------
JRadioButton rb1 = new JRadioButton("Einzahlung");
rb1.setSize(113,25);
rb1.setLocation(25,320);
rb1.setBackground(Color.WHITE);
rb1.addActionListener(this);
hlabel1.add(rb1);
JRadioButton rb2 = new JRadioButton("Ausgabe");
rb2.setSize(114,25);
rb2.setLocation(139,320);
rb2.setBackground(Color.WHITE);
rb2.addActionListener(this);
hlabel1.add(rb2);
ButtonGroup group = new ButtonGroup();
group.add(rb1);
group.add(rb2);

// Dropdown-Auswahl für neue Kategorie
// Kategorien zum auswählen
String lang[] = {"...", "Lebensmittel", "KFZ", "Wohnen", "Bildung", "Freizeit","Haushaltswaren", "Kleidung", "Verdienst"};
JComboBox katselNew = new JComboBox();
katselNew.setSize(227,25);
katselNew.setLocation(25,420);
katselNew.setBackground(Color.WHITE);
hlabel1.add(katselNew);

// Checkbox mit Kategorien füllen
for ( int i = 0; i < lang.length; i++ )
katselNew.addItem( lang[i] );

katselNew.addItemListener(this);


// ------------------------------------------------------------------------------
// Button um Eintrag zu löschen
JButton b4 = new JButton("Löschen");
b4.setSize(100,50);
b4.setLocation(25,450);
b4.setBackground(Color.WHITE);
hlabel1.add(b4);
b4.addActionListener(this);

fr.setVisible();


}
.....Klasse geht im nächsten Post weiter.....
 
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 24.11.2005, 02:18 Nach oben    #7
Patterchen
Gast
 
Beiträge: n/a
Standard

Code:
// --------------------------------------------------------------
// -------------------LISTENER-----------------------------------------
// ---------------------------------------------------------------------
 
public void actionPerformed(ActionEvent e) 
{
if(e.getActionCommand().equals("Abfragen"))
{
loeschen();
ausgabeFenster.query();
 
} ;
 
if(e.getActionCommand().equals("Updaten"))
{
 
int entryID;
 
entryID = getEntry_ID();
System.out.println("Aus Listener updaten:"+ entryID);
String neuB = getNeuBeschr();
String neuKat = getkat();
double neuBetrag = getNeuBetrag();
String neuDatum = getNeuDatum();
String neuEinoderAus = einoderaus();
 
datenBank.setUpdate(neuB,
entryID,
neuKat,
neuBetrag,
neuDatum,
neuEinoderAus);
 
if(datenBank.setUpdate(neuB, entryID, neuKat, neuBetrag, neuDatum, neuEinoderAus)==true)
{
ausgabeFenster.query();
loeschen();
}
 
else JOptionPane.showMessageDialog(null, "Updatevorgang fehlgeschlagen!");
 
};}
 
public void itemStateChanged( ItemEvent e )
{
JComboBox selectedChoice = (JComboBox)e.getSource();
 
if(e.getStateChange() == ItemEvent.SELECTED)
{
kat = (String)selectedChoice.getSelectedItem();
}
}
 
 
}
Die obrige Klasse AusgabefensterGui wird von Ausgabefenster sufgerufen:
Code:
 
 
public class Ausgabefenster {
 
private static final long serialVersionUID = 1L;
 
AusgabefensterGui ausgabefensterGui;
Datenbank datenBank;
 
String datumAnfang;
String datumEnde;
 
String kat;
String einoderaus;
String wdh;
String[] kombi;
 
/**
* Constructor
* @param datenBank
*/ 
	public Ausgabefenster(Datenbank datenBank)
	{
	 this.datenBank = datenBank;
	 ausgabefensterGui = new AusgabefensterGui(this);
	}
 
/**
* query() steuert die Darstellung der DB-Abfrage. Hier werden alle
* Funktionen gebündelt die die Daten der DB-Abfrage zur Ausgabe
* aufbereiten.
* Von Hier werden dann alle diese Funktionen aufgerufen.
*
*/
public void query() 
{
ausgabefensterGui.diagrammDatenAufbereitung();
	 ausgabefensterGui.tabellenDatenAufbereitung();
}
 
}
Dann gibt es die Klasse Balkendiagramm, diese erzeugt ein diagramm aus Labels.
Code:
 
import javax.swing.*;
import java.awt.*;
 
public class Balkendiagramm
{
 
String[] kombi;
Datenbank datenBank;
AusgabefensterGui ausgabefensterGui;
Ausgabefenster ausgabeFenster;
 
/**
* Constructor
* @param kombi
* @return labeldb
*/ 
public JLabel create(String[] kombi)
{
 
datenBank = new Datenbank();
datenBank.diagrammDaten();
 
kombi = datenBank.diagrammDaten();
 
	JLabel labelbd = new JLabel();
	labelbd.setSize(500, 300);
	labelbd.setLocation(300,0);
 
 
	double gesamtWert = 0;
	double einnahmenGes=0;
	double ausgabenGes=0;
	String[] kategorie = new String[8];
	double[] betraege = new double[8];
 
 
//Durch folgende for-Schleife wird der ÜbergabeString in Beträge und Kategorien geteilt 
	for (int i=0; i<kombi.length; i++)
	{
	kategorie[i]= kombi[i].substring(0,1);
	betraege[i]= Double.parseDouble(kombi[i].substring(1,kombi[i].length()));
 
	 gesamtWert = gesamtWert + betraege[i]; 
	}
 
 
// Testausgabe der for-Schleife 
	for(int i= 0; i<kategorie.length; i++)
	{
	 System.out.println("Kategorien: "+ kategorie[i]);
	 System.out.println("Beträge: "+ betraege[i]);
	}
 
	double tf1size=0;
.......von tf1size bis tf9size........
	double tf9size=0;
 
/*	
*Die Balkenlänge ergibt sich aus dem Verhältnis von gesamtBetrag und dem Betrag
*der jeweiligen Kategorie
*/
 
	System.out.println("Gesamtwert:" + gesamtWert);
 
	if (gesamtWert > 1000)
	{
	 for(int i=0; i<kategorie.length; i++)
	 {
	 if (kategorie[i].equals("L")){tf1size = (betraege[i]/gesamtWert)*100.0;};
	 if (kategorie[i].equals("K")){tf2size = (betraege[i]/gesamtWert)*100.0;};
	 if (kategorie[i].equals("W")){tf3size = (betraege[i]/gesamtWert)*100.0;};
	 if (kategorie[i].equals("B")){tf4size = (betraege[i]/gesamtWert)*100.0;};
	 if (kategorie[i].equals("F")){tf5size = (betraege[i]/gesamtWert)*100.0;};
	 if (kategorie[i].equals("H")){tf6size = (betraege[i]/gesamtWert)*100.0;};
	 if (kategorie[i].equals("A")){tf7size = (betraege[i]/gesamtWert)*100.0;};
	 if (kategorie[i].equals("V")){tf8size = (betraege[i]/gesamtWert)*100.0;}; 
	 } 
	 tf9size = (gesamtWert/gesamtWert)*100.0;
	}
 
	else {
	 for(int i=0; i<kategorie.length; i++)
	 {
	 if (kategorie[i].equals("L")){tf1size = (betraege[i]/gesamtWert);};
	 if (kategorie[i].equals("K")){tf2size = (betraege[i]/gesamtWert);};
	 if (kategorie[i].equals("W")){tf3size = (betraege[i]/gesamtWert);};
	 if (kategorie[i].equals("B")){tf4size = (betraege[i]/gesamtWert);};
	 if (kategorie[i].equals("F")){tf5size = (betraege[i]/gesamtWert);};
	 if (kategorie[i].equals("H")){tf6size = (betraege[i]/gesamtWert);};
	 if (kategorie[i].equals("A")){tf7size = (betraege[i]/gesamtWert);};
	 if (kategorie[i].equals("V")){tf8size = (betraege[i]/gesamtWert);}; 
	 } 
	 tf9size = (gesamtWert/gesamtWert);
	}
 
 
 
	for(int j=0; j<betraege.length; j++)
	{
	 if(betraege[j]<=0)
	 {
	 ausgabenGes= ausgabenGes + betraege[j];
	 }
	 else
	 {
	 einnahmenGes = einnahmenGes + betraege[j];
	 }
	}
 
	System.out.println(einnahmenGes);
	System.out.println(ausgabenGes);
 
 
 
 
//----------------------------------------------------------------------
//----------------------DIAGRAMM--------------------------------------
//----------------------------------------------------------------------
 
//Hierwerden die Balken des Diagramms berechnet	
//---------------------------------------------------------------------------------
//Feld für Lebensmittel	
 
	if((tf1size > 0 && tf1size < 100) || (tf1size < 0 && tf1size > (-100)))
	{
		 JTextField tf1a = new JTextField("Lebensmittel");
		 tf1a.setEnabled(false);
		 tf1a.setDisabledTextColor(Color.BLACK);
		 tf1a.setSize(100,20);
		 tf1a.setLocation(350,60);
		 labelbd.add(tf1a);
 
		 if(tf1size>0 && tf1size<100.0)
		 {
		 JTextField tf1b = new JTextField(" ");
		 tf1b.setEnabled(false);
		 tf1b.setDisabledTextColor(Color.BLACK);
		 tf1b.setSize( (int)tf1size,20);
		 tf1b.setLocation(250,60);
		 tf1b.setBackground(Color.GRAY);
		 labelbd.add(tf1b);
		 }
 
		 else if(tf1size < 0 && tf1size > (-100))
		 {
		 JTextField tf1b = new JTextField(" ");
		 tf1b.setEnabled(false);
		 tf1b.setDisabledTextColor(Color.BLACK);
		 tf1b.setSize( ( (int)tf1size * ( -1 ) ), 20);
		 tf1b.setLocation( (250 - ( (int)tf1size) * ( -1 ) ), 60);
		 tf1b.setBackground(Color.GRAY);
		 labelbd.add(tf1b);		 
		 }
	}
 
	else if (tf1size < (-100))
	{
	 JTextField tf1 = new JTextField("Lebensmittel");
		tf1.setEnabled(false);
		tf1.setDisabledTextColor(Color.BLACK);
		tf1.setSize( ( ( (int)tf1size) * ( -1 ) ), 20);
		tf1.setLocation( ( 250 - ( (int)tf1size * ( -1 ) ) ), 60);
		tf1.setBackground(Color.GRAY);
		labelbd.add(tf1);
	}
 
	else {
		 JTextField tf1 = new JTextField("Lebensmittel");
		 tf1.setEnabled(false);
		 tf1.setDisabledTextColor(Color.BLACK);
		 tf1.setSize( (int)tf1size,20);
		 tf1.setLocation(250,60);
		 tf1.setBackground(Color.GRAY);
		 labelbd.add(tf1);
		 } 
 
	 return labelbd;
}
 
......das gleiche nochmals für 8 felder.....
SO, denke das müsste der benötigte code sein.
 
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 24.11.2005, 02:27 Nach oben    #8
Patterchen
Gast
 
Beiträge: n/a
Standard

Hoffe ihr könnt mir helfen, hab am freitag meine erste vorstellung über teilergebnisse
 
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 24.11.2005, 10:56 Nach oben    #9
Erfahrener Benutzer
 
Registriert seit: 02.02.2005
Beiträge: 557
Standard

Boah ... du sollstest mehr Code (den relevanten) Posten und net alles. Sry, aber mir da alles anzuschauen und durchzulesen übersteigt meine verfügbare Zeit.
Gottzilla ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
PingBacks sind an
RefBacks sind aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Componente wird nicht angezeigt Prophet Desktop-Applikationen und Grafik 4 25.07.2006 12:24
[XAMPP] Ordner wird nicht angezeigt Ben Tools, Server, Betriebssysteme 7 16.05.2006 13:24
Tabellenzellen aktualisieren sich intern, Änderung wird aber nicht angezeigt Ben Desktop-Applikationen und Grafik 6 14.03.2006 07:45
applet wird nicht angezeigt function Desktop-Applikationen und Grafik 4 31.10.2005 12:48
Icons in Applet werden nicht angezeigt.. peddn Desktop-Applikationen und Grafik 2 02.07.2005 05:41


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:20 Uhr.


Powered by vBulletin® Version 3.7.4 (Deutsch)
Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45