這裏是我添加新的組件代碼:JPanel中透明JCheckBox的問題?
addButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if (!todoListInput.getText().equals("")) {
JPanel panel = new JPanel(new FlowLayout(FlowLayout.LEFT));
panel.setBackground(new Color(213, 134, 145, 55));
JCheckBox checkBox = new JCheckBox("");
checkBox.setOpaque(false);
checkBox.setForeground(Color.WHITE);
//checkBox.setBorder(line);
panel.add(checkBox);
Border border = new LineBorder(Color.GRAY, 1, true);
Border margin = new EmptyBorder(10,10,10,10);
panel.setBorder(new CompoundBorder(margin, border));
GridBagConstraints gbc = new GridBagConstraints();
gbc.gridwidth = GridBagConstraints.REMAINDER;
gbc.weightx = 1;
gbc.fill = GridBagConstraints.HORIZONTAL;
mainList.add(panel, gbc, 0);
validate();
repaint();
todoListInput.setText("");
}
}
});
我的問題是,當我做一個「的onmouseover」行動,該複選框,整個JFrame的部分將出現在複選框後面
我發現,這隻出現在我做checkBox.setOpaque(false)或checkBox.setBackground(新顏色(122,122,122,55))。
我可以知道我的代碼有什麼問題嗎?
你的問題在這裏'panel.setBackground(new Color(213,134,145,55));'。 Swing不知道如何處理基於alpha的背景顏色,它只處理完全不透明或透明的組件。爲了使它工作,你需要僞裝它,通過使組件完全透明並在組件中繪製半透明顏色'paintComponent'方法 – MadProgrammer
像[this](http://stackoverflow.com/questions/32216625/)如何製作一個半透明的jpanel-within-the-region-jpanel/32217554#32217554)例如 – MadProgrammer