Προς το περιεχόμενο

Απορία για Java


Επισκέπτης

Προτεινόμενες αναρτήσεις

Δημοσ.

Κλάση DemoFrame

>package MainPack;

import java.awt.Color;
import javax.swing.JFrame;

public class DemoFrame extends JFrame {
public static MyPanel myPanel;

public DemoFrame( ) {
	super( "Demo Frame" );
	setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
	getContentPane( ).setBackground( new Color( 100, 200, 250 ) );
              setSize( 400, 300  );
              setLocation( 470, 100 );
              setResizable( false );
              setLayout( null );
              setVisible( true );
       
              MyPanel myPanel = new MyPanel( );
              myPanel.setSize( 154, 94 );
	myPanel.setLocation( 50, 50 );
	myPanel.setBackground( Color.BLACK );//Δεν αλλάζει το Background του MyPanel.
              add( myPanel );
}

public static void main( String args[ ] ) {
	DemoFrame demoFrame = new DemoFrame( );
	MyPanel myPanel = new MyPanel( );
}
}

 

Κλάση MyPanel

>
package MainPack;

import java.awt.Color;
import java.awt.Graphics;

import javax.swing.JPanel;

public class MyPanel extends JPanel {
public void paintComponent( Graphics g ) {
	super.paintComponent( g );
	this.setBackground( Color.RED );
	
	g.setColor( Color.WHITE );
	g.drawString( "My Panel", 50, 50 );
}
}

 

Το πρόβλημα είναι γιατί δεν αλλάζει το Background στο MyPanel...

Καμιά ιδέα κανείς;

Δημοσ.

δεν αλλάζει γιατί το έχεις ορίσει μέσα στην

paintcomponent

οπότε ότι και να βάλεις επιστρέφει στην αρχική κατάσταση.

 

μπορείς να το κάνεις έτσι

>
import java.awt.Color;
import javax.swing.JFrame;

public class DemoFrame extends JFrame {
public static MyPanel myPanel;

public DemoFrame( ) {
	super( "Demo Frame" );
	setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
	getContentPane( ).setBackground( new Color( 100, 200, 250 ) );
              setSize( 400, 300  );
              setLocation( 470, 100 );
              setResizable( false );
              setLayout( null );
              setVisible( true );
       
              MyPanel myPanel = new MyPanel( );
              myPanel.setSize( 154, 94 );
	myPanel.setLocation( 50, 50 );
	myPanel.setBackColor( Color.BLACK );
	myPanel.setFontColor(Color.RED);
              add( myPanel );
}

public static void main( String args[ ] ) {
	DemoFrame demoFrame = new DemoFrame( );
}
}

 

και

 

>
import java.awt.Color;
import java.awt.Graphics;

import javax.swing.JPanel;

public class MyPanel extends JPanel {
private Color background=Color.RED;
private Color fontColor=Color.WHITE;

public MyPanel(){
}

public MyPanel(Color background,Color fontColor){
	this.background=background;
	this.fontColor=fontColor;
}
public void setBackColor(Color color){
	this.background=color;
}
public void setFontColor(Color color){
	this.fontColor=color;
}
public void paintComponent( Graphics g ) {
	super.paintComponent( g );
	this.setBackground( background );
	
	g.setColor(fontColor );
	g.drawString( "My Panel", 50, 50 );
}
}

 

επίσης με τις αλλαγές πιο πάνω μπορείς να δίνεις τα χρώματα και με την

αρχικοποίηση

 

π.χ.

 

>MyPanel myPanel=new MyPanel(Color.BLACK,Color.RED);

Δημοσ.

Έχω μια άλλη απορία...

 

Δημιουργώ ένα JPanel και μετά του προσθέτω ένα JLabel:

>panel = new JPanel( );
label = new JLabel( "Label" );
panel.add( label );

Μετά προσπαθώ να αλλάξω το String του label με την εξής γραμμή κώδικα label.setText( "Label changed" ); αλλά δεν αλλάζει.Την αλλάγη την κάνω σε άλλη μέθοδο από εκεί που έχω ορίσει το panel και το label.

Τι κάνω λάθος;;;

Δημοσ.
Έχω μια άλλη απορία...

 

Δημιουργώ ένα JPanel και μετά του προσθέτω ένα JLabel:

>panel = new JPanel( );
label = new JLabel( "Label" );
panel.add( label );

Μετά προσπαθώ να αλλάξω το String του label με την εξής γραμμή κώδικα label.setText( "Label changed" ); αλλά δεν αλλάζει.Την αλλάγη την κάνω σε άλλη μέθοδο από εκεί που έχω ορίσει το panel και το label.

Τι κάνω λάθος;;;

 

Την μέθοδο μέσα στην οποία κάνεις την αλλαγή την καλέις από κάπου?

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...