私は、サイドプロジェクトの一部としてスイングに基づいて独自のカスタム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を使用しました)。 パッケージ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);
}
}
これは、フレームが最小化する前にどのように見えるかです:
これは後に、それがどのように見えるかです:あなたはあなたをDeiconifyingているとき再描画や再検証しようとすることができ
オフトピックのヒント:「#1abc9c」は、16進整数リテラルである「0x1abc9c」に変更できます。文字列をデコードせずに 'new Color(0x1abc9c)'で 'Color'オブジェクトを構築するために使用することができます; – BackSlash
@BackSlash、ありがとう、ありがとう。 –