저는 스윙을 기반으로하는 자체 사용자 정의 GUI 툴킷을 부 프로젝트의 일부로 만들려고합니다. 내 문제는 이것입니다 : 최소화 단추를 사용하고 다시 최대화 할 때 끝내기 및 최소화 단추가있는 프레임을 만들었습니다. 창은 올바른 형식이 아닙니다. 다음은 프레임 클래스에 대한 코드입니다.어떻게 사용자 정의 프레임을 다시 칠할 수 있습니까?
package com.SMS.GUI;
import java.awt.Color;
import java.awt.Frame;
import javax.swing.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseListener;
/**
*
* @author Marc
*/
final class SMSFrame extends JFrame implements MouseListener{
GUIButton minimizeButton, exitButton;
JPanel titleBar;
SMSFrame(int width, int height){
setResizable(false);
setUndecorated(true);
setSize(width,height);
getContentPane().setBackground(Color.decode("#8e44ad"));
setVisible(true);
minimizeButton = new GUIButton((width-100),0,50,50,"#1abc9c");
exitButton = new GUIButton((width-50), 0, 50, 50, "#d35400");
titleBar = new JPanel();
titleBar.setBackground(Color.decode("#2c3e50"));
titleBar.setBounds(0, 0, width, 50);
minimizeButton.addMouseListener(this);
exitButton.addMouseListener(this);
add(titleBar);
titleBar.add(exitButton);
titleBar.add(minimizeButton);
}
@Override
public void mouseClicked(MouseEvent e) {
}
@Override
public void mousePressed(MouseEvent e) {
if(e.getSource() == exitButton){
exitButton.setBackground(Color.decode("#c0392b"));
}
if(e.getSource() == minimizeButton){
minimizeButton.setBackground(Color.decode("#2ecc71"));
}
}
@Override
public void mouseReleased(MouseEvent e) {
if(e.getSource() == exitButton){
System.exit(0);
}
if(e.getSource() == minimizeButton){
super.setState(JFrame.ICONIFIED);
}
}
@Override
public void mouseEntered(MouseEvent e) {
if(e.getSource() == exitButton){
exitButton.setBackground(Color.decode("#e74c3c"));
}
if(e.getSource() == minimizeButton){
minimizeButton.setBackground(Color.decode("#16a085"));
}
}
@Override
public void mouseExited(MouseEvent e) {
if(e.getSource() == exitButton){
exitButton.setBackground(Color.decode("#d35400"));
}
if(e.getSource() == minimizeButton){
minimizeButton.setBackground(Color.decode("#1abc9c"));
}
}
}
다음은 사용자 정의 버튼 코드입니다 (JPanels 사용). package com.SMS.GUI;
import java.awt.Color;
import javax.swing.JPanel;
final class GUIButton extends JPanel{
GUIButton(int x, int y, int width, int height, String hexidecimal_colour){
setBackground(Color.decode(hexidecimal_colour));
setBounds(x, y, width, height);
}
GUIButton(int width, int height, String hexidecimal_colour){
setBackground(Color.decode(hexidecimal_colour));
setSize(width, height);
}
}
주제 외 팁 :' "# 1abc9c"'는 16 진수 정수 리터럴 인 '0x1abc9c'로 변경할 수 있습니다. 그런 다음 문자열을 디코딩하지 않고'new Color (0x1abc9c)'를 사용하여'Color' 객체를 생성 할 수 있습니다;) – BackSlash
@BackSlash, 감사합니다. –