Επισκέπτης Δημοσ. 4 Ιανουαρίου 2010 Δημοσ. 4 Ιανουαρίου 2010 Κλάση 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... Καμιά ιδέα κανείς;
virxen75 Δημοσ. 4 Ιανουαρίου 2010 Δημοσ. 4 Ιανουαρίου 2010 δεν αλλάζει γιατί το έχεις ορίσει μέσα στην 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);
Επισκέπτης Δημοσ. 8 Ιανουαρίου 2010 Δημοσ. 8 Ιανουαρίου 2010 Έχω μια άλλη απορία... Δημιουργώ ένα JPanel και μετά του προσθέτω ένα JLabel: >panel = new JPanel( ); label = new JLabel( "Label" ); panel.add( label ); Μετά προσπαθώ να αλλάξω το String του label με την εξής γραμμή κώδικα label.setText( "Label changed" ); αλλά δεν αλλάζει.Την αλλάγη την κάνω σε άλλη μέθοδο από εκεί που έχω ορίσει το panel και το label. Τι κάνω λάθος;;;
lnoldori Δημοσ. 11 Ιανουαρίου 2010 Δημοσ. 11 Ιανουαρίου 2010 Έχω μια άλλη απορία... Δημιουργώ ένα JPanel και μετά του προσθέτω ένα JLabel: >panel = new JPanel( ); label = new JLabel( "Label" ); panel.add( label ); Μετά προσπαθώ να αλλάξω το String του label με την εξής γραμμή κώδικα label.setText( "Label changed" ); αλλά δεν αλλάζει.Την αλλάγη την κάνω σε άλλη μέθοδο από εκεί που έχω ορίσει το panel και το label. Τι κάνω λάθος;;; Την μέθοδο μέσα στην οποία κάνεις την αλλαγή την καλέις από κάπου?
teo64x Δημοσ. 11 Ιανουαρίου 2010 Δημοσ. 11 Ιανουαρίου 2010 Έχω καιρό να γράψω Java, αλλά δοκίμασε μήπως θέλει κανένα validate μετά την αλλαγή.
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.