2017-09-17 287 views
2

更改颜色

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); 

我试图改变的背景,但它没有彻底改变,代码是有点所有的地方,我认为这只是一个部分,其实就是我挣扎。

+2

此外,您试图将影像分享的仅仅是在您的计算机上,因此它不能被其他人查看... –

+1

你需要发布[mcve],以便我们可以看到代码无法工作的原因。请帮助我们帮助你。 –

+0

@JohnD:css在这方面确实没有一席之地。 –

回答

3

你看到什么:

enter image description here

JPanel的持有你的组件,你的JTextField中,标签和按钮应该由非不透明的。打电话给.setOpaque(false),你应该看到它下面的颜色。

例如:

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); 
     }); 
    } 
} 

让您pinPanel非不透明。的contentPane,那你设置粉色应保持不透明组件:

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

我试过了:JLabel pinLabel = new JLabel(“Enter your Pin:”); pinLabel.setOpaque(false); pinTextField = new JTextField(); JButton pinButton = new JButton(“EnterPin OK”); pinButton.setOpaque(false);它没有做任何事情 – LiyanA

+1

@LiyanA:不,这不是我告诉你要做的。而是包含所有这些的JPanel。我们已经要求你的[mcve]代码,但是你还没有向我们展示它,所以没人能告诉你你做错了什么。请修复。有关MCVE的示例,请参阅上面发布的代码。 –

+0

@LiyanA:让你的pinPanel不透明,而不是contentPane。 –