2017-09-17 1 views
2

Changer la couleur sur l'interface graphique

public ATMgui1() 
{ 
    setTitle("ATM Transactions"); 
    setSize(WIDTH, HEIGHT); 
    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); 

    JPanel contentPane = new JPanel(); 

    contentPane.setBackground(Color.PINK); 
    setContentPane(contentPane); 
    contentPane.setOpaque(false); 

    JLabel pinLabel = new JLabel("Enter your Pin:"); 
    pinLabel.setOpaque(false); 
    pinTextField = new JTextField(); 
    JButton pinButton = new JButton("EnterPin OK"); 
    pinButton.setOpaque(false); 

    JLabel pinChangeLabel = new JLabel("Enter your new Pin:"); 
    JTextField pinChangeTextField = new JTextField(); 
    JButton pinChangeButton = new JButton("Change Pin"); 

    JButton exitButton = new JButton("EXIT"); 
    exitButton.addActionListener(e -> this.dispose()); 

    pinButton.addActionListener(this); 

    JPanel pinPanel = new JPanel(); 
    pinPanel.setLayout(new GridLayout(3, 3)); 
    pinPanel.add(pinLabel); 
    pinPanel.add(pinTextField); 
    pinPanel.add(pinButton); 
    pinPanel.add(pinChangeLabel); 
    pinPanel.add(pinChangeTextField); 
    pinPanel.add(pinChangeButton); 

    pinPanel.add(exitButton); 

    contentPane.add(pinPanel, BorderLayout.CENTER); 

J'ai essayé de changer l'arrière-plan, mais il est pas tout à fait changer, le code est un peu dans tous les sens et je pense qu'il est seulement dans une section qui est en fait ce que je suis aux prises avec .

+2

En outre, l'image que vous avez essayé de partager est uniquement sur votre ordinateur, il ne peut pas être vu par les autres ... Vous –

+1

besoin de poster un [mcve] afin que nous puissions voir pourquoi votre code ne fonctionne pas. S'il vous plaît, aidez-nous à vous aider. –

+0

@JohnD: css n'a vraiment pas sa place ici. –

Répondre

3

Qu'est-ce que vous voyez:

enter image description here

Le JPanel qui détiennent vos composants, vos JTextFields, les étiquettes et les boutons doivent être faites non opaque. Appelez dessus, et vous devriez voir la couleur en dessous.

Par exemple:

import java.awt.Color; 

import javax.swing.BorderFactory; 
import javax.swing.Box; 
import javax.swing.BoxLayout; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 
import javax.swing.JTextField; 
import javax.swing.SwingUtilities; 

public class PinkBackground { 
    public static void main(String[] args) { 
     SwingUtilities.invokeLater(() -> { 
      JPanel panel = new JPanel(); 
      panel.setLayout(new BoxLayout(panel, BoxLayout.PAGE_AXIS)); 
      panel.add(new JTextField(10)); 
      panel.add(Box.createVerticalStrut(15)); 
      panel.add(new JTextField(10)); 
      panel.setBorder(BorderFactory.createEmptyBorder(15, 15, 15, 15)); 

      // panel.setOpaque(false); // ******* uncomment this! ********** 

      JFrame frame = new JFrame(); 
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
      frame.getContentPane().setBackground(Color.PINK); 
      frame.add(panel); 
      frame.pack(); 
      frame.setLocationRelativeTo(null); 
      frame.setVisible(true); 
     }); 
    } 
} 

Faites votre non-opaque pinPanel. Le contentPane, le composant qui vous définissez au rose doit rester opaque:

public ATMgui1() { 

    setTitle("ATM Transactions"); 
    setSize(WIDTH, HEIGHT); 
    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); 

    JPanel contentPane = new JPanel(); 

    contentPane.setBackground(Color.PINK); 
    setContentPane(contentPane); 

    JLabel pinLabel = new JLabel("Enter your Pin:"); 
    // pinLabel.setOpaque(false); 
    pinTextField = new JTextField(); 
    JButton pinButton = new JButton("EnterPin OK"); 
    // pinButton.setOpaque(false); 

    JLabel pinChangeLabel = new JLabel("Enter your new Pin:"); 
    JTextField pinChangeTextField = new JTextField(); 
    JButton pinChangeButton = new JButton("Change Pin"); 

    JButton exitButton = new JButton("EXIT"); 
    exitButton.addActionListener(e -> this.dispose()); 

    pinButton.addActionListener(this); 

    JPanel pinPanel = new JPanel(); 
    pinPanel.setOpaque(false); // !! 
    pinPanel.setLayout(new GridLayout(3, 3)); 
    pinPanel.add(pinLabel); 
    pinPanel.add(pinTextField); 
    pinPanel.add(pinButton); 
    pinPanel.add(pinChangeLabel); 
    pinPanel.add(pinChangeTextField); 
    pinPanel.add(pinChangeButton); 

    pinPanel.add(exitButton); 

    contentPane.add(pinPanel, BorderLayout.CENTER); 
} 
+0

j'ai essayé: JLabel pinLabel = nouveau JLabel ("Entrez votre Pin:"); pinLabel.setOpaque (false); pinTextField = new JTextField(); JButton pinButton = nouveau JButton ("EnterPin OK"); pinButton.setOpaque (false); ça ne fait rien – LiyanA

+1

@LiyanA: non, ce n'est pas ce que je vous dis de faire. Plutôt le JPanel qui les tient tous. Et nous avons demandé votre code [mcve], mais vous ne nous l'avez pas encore montré, donc personne ne peut vous dire ce que vous faites mal. S'il-vous-plaît, réparez. Pour un exemple de MCVE, s'il vous plaît voir mon code posté ci-dessus. –

+0

@LiyanA: rend votre pinPanel non-opaque, pas le contentPane. –