Kol5a4ok
Активный участник
- Баллы
- 68
- Имя в Minecraft
- Kol5a4ok
мне нужна что бы панель(которая на скрине) была прозрачной но у меня не как не получается помогите!Вот код!
Java:
package net.minecraft;
import kol5a4ok.minecraftmanager.MinecraftBackupManager;
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Checkbox;
import java.awt.Color;
import java.awt.Cursor;
import java.awt.Desktop;
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.Image;
import java.awt.Insets;
import java.awt.Label;
import java.awt.Panel;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.image.VolatileImage;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.URL;
import java.util.Random;
import javax.crypto.Cipher;
import javax.crypto.CipherInputStream;
import javax.crypto.CipherOutputStream;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.PBEKeySpec;
import javax.crypto.spec.PBEParameterSpec;
import javax.imageio.ImageIO;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Cursor;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.Image;
import java.awt.Insets;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileFilter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URISyntaxException;
import java.net.URL;
import java.net.URLEncoder;
import java.nio.channels.FileChannel;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Properties;
import java.util.Random;
import javax.crypto.Cipher;
import javax.crypto.CipherInputStream;
import javax.crypto.CipherOutputStream;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.PBEKeySpec;
import javax.crypto.spec.PBEParameterSpec;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFileChooser;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.JTextPane;
import javax.swing.border.MatteBorder;
import javax.swing.event.HyperlinkEvent;
import javax.swing.event.HyperlinkListener;
public class LoginForm extends Panel {
private static final long serialVersionUID = 1L;
private Image bgImage;
private TextField userName = new TextField(25);
private Checkbox forceUpdateBox = new Checkbox("Обновление");
private Button launchButton = new Button("Войти");
private Label errorLabel = new Label("", 1);
private Label creditsVersion = new Label("v0.2");
private Button openManager = new Button("Менеджер сохранений");
private LauncherFrame launcherFrame;
private boolean outdated = false;
private VolatileImage img;
public LoginForm(LauncherFrame launcherFrame) {
this.launcherFrame = launcherFrame;
GridBagLayout gbl = new GridBagLayout();
setLayout(gbl);
add(buildLoginPanel());
try {
this.bgImage = ImageIO.read(LoginForm.class.getResource("bg.png")).getScaledInstance(512, 320, 16);
} catch (IOException e) {
e.printStackTrace();
}
readUsername();
this.launchButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
if (LoginForm.this.forceUpdateBox.getState()) {
LoginForm.this.launcherFrame.forceUpdate = true;
}
LoginForm.this.launcherFrame.login(LoginForm.this.userName.getText());
}
});
}
private void readUsername() {
try {
File lastLogin = new File(MinecraftUtil.getWorkingDirectory(), "lastlogin");
Cipher cipher = getCipher(2, "passwordfile");
DataInputStream dis;
if (cipher != null)
dis = new DataInputStream(new CipherInputStream(new FileInputStream(lastLogin), cipher));
else {
dis = new DataInputStream(new FileInputStream(lastLogin));
}
this.userName.setText(dis.readUTF());
dis.close();
}catch (Exception e) {
System.out.println("Файл с последним логином отсуствует!");
}
}
private void writeUsername() {
try {
File lastLogin = new File(MinecraftUtil.getWorkingDirectory(), "lastlogin");
Cipher cipher = getCipher(1, "passwordfile");
DataOutputStream dos;
if (cipher != null)
dos = new DataOutputStream(new CipherOutputStream(new FileOutputStream(lastLogin), cipher));
else {
dos = new DataOutputStream(new FileOutputStream(lastLogin));
}
dos.writeUTF(this.userName.getText());
dos.writeUTF("");
dos.close();
}catch (Exception e) {
e.printStackTrace();
}
}
private Cipher getCipher(int mode, String password) throws Exception {
Random random = new Random(43287234L);
byte[] salt = new byte[8];
random.nextBytes(salt);
PBEParameterSpec pbeParamSpec = new PBEParameterSpec(salt, 5);
SecretKey pbeKey = SecretKeyFactory.getInstance("PBEWithMD5AndDES").generateSecret(new PBEKeySpec(password.toCharArray()));
Cipher cipher = Cipher.getInstance("PBEWithMD5AndDES");
cipher.init(mode, pbeKey, pbeParamSpec);
return cipher;
}
public void update(Graphics g) {
paint(g);
}
public void paint(Graphics g2) {
int w = getWidth() / 2;
int h = getHeight() / 2;
if ((this.img == null) || (this.img.getWidth(null) != w) || (this.img.getHeight(null) != h)) {
this.img = createVolatileImage(w, h);
}
Graphics g = this.img.getGraphics();
for (int x = 0; x <= w * 0; x++) {
for (int y = 0; y <= h * 0; y++) {
g.drawImage(this.bgImage, x, y, null);
}
}
g.setColor(new Color(0,0,0,129));
String msg = "";
g.setFont(new Font(null, 1, 20));
FontMetrics fm = g.getFontMetrics();
g.drawString(msg, w / 2 - fm.stringWidth(msg) / 2, h / 2 - fm.getHeight() * 2);
g.dispose();
g2.drawImage(this.img, 0, 0, w * 2, h * 2, null);
}
private Panel buildLoginPanel() {
Panel panel = new Panel() {
private static final long serialVersionUID = 1L;
private Insets insets = new Insets(12, 24, 16, 32);
public Insets getInsets() {
return this.insets;
}
public void update(Graphics g) {
paint(g);
}
public void paint(Graphics g) {
super.paint(g);
int hOffs = 0;
g.setColor(new Color(0,0,0,129));
g.drawRect(0, 0 + hOffs, getWidth() - 1, getHeight() - 1 - hOffs);
g.drawRect(1, 1 + hOffs, getWidth() - 3, getHeight() - 3 - hOffs);
g.setColor(new Color(0,0,0,129));
g.drawRect(2, 2 + hOffs, getWidth() - 5, getHeight() - 5 - hOffs);
}
};
panel.setForeground(Color.BLACK);
panel.setBackground(new Color(50,50,50,50));
BorderLayout layout = new BorderLayout();
layout.setHgap(0);
layout.setVgap(0);
panel.setLayout(layout);
GridLayout gl1 = new GridLayout(0, 1);
GridLayout gl2 = new GridLayout(0, 1);
gl1.setVgap(2);
gl2.setVgap(2);
Panel titles = new Panel(gl1);
Panel values = new Panel(gl2);
titles.add(new Label("Имя:", 2));
titles.add(new Label("", 2));
values.add(this.userName);
values.add(this.forceUpdateBox);
panel.add(titles, "West");
panel.add(values, "Center");
Panel loginPanel = new Panel(new BorderLayout());
Panel registerPanel = new Panel(new BorderLayout());
try {
if (this.outdated) {
Label accountLink = new Label("Обновите Лаунчер!") {
private static final long serialVersionUID = 0L;
public void paint(Graphics g) {
super.paint(g);
int x = 0;
int y = 0;
FontMetrics fm = g.getFontMetrics();
int width = fm.stringWidth(getText());
int height = fm.getHeight();
if (getAlignment() == 0)
x = 0;
else if (getAlignment() == 1)
x = getBounds().width / 2 - width / 2;
else if (getAlignment() == 2) {
x = getBounds().width - width;
}
y = getBounds().height / 2 + height / 2 - 1;
g.drawLine(x + 2, y, x + width - 2, y);
}
public void update(Graphics g) {
paint(g);
}
};
accountLink.setCursor(Cursor.getPredefinedCursor(12));
accountLink.addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent arg0) {
try {
Desktop.getDesktop().browse(new URL("http://www.minecraft.net/download.jsp").toURI());
} catch (Exception e) {
e.printStackTrace();
}
}
});
accountLink.setForeground(new Color(0, 0, 0, 129));
registerPanel.add(accountLink, "West");
registerPanel.add(new Panel(), "Center");
} else {
Label accountLink = new Label("Need account?") {
private static final long serialVersionUID = 0L;
public void paint(Graphics g) {
super.paint(g);
int x = 0;
int y = 0;
FontMetrics fm = g.getFontMetrics();
int width = fm.stringWidth(getText());
int height = fm.getHeight();
if (getAlignment() == 0)
x = 0;
else if (getAlignment() == 1)
x = getBounds().width / 2 - width / 2;
else if (getAlignment() == 2) {
x = getBounds().width - width;
}
y = getBounds().height / 2 + height / 2 - 1;
g.drawLine(x + 2, y, x + width - 2, y);
}
public void update(Graphics g) {
paint(g);
}
};
accountLink.setCursor(Cursor.getPredefinedCursor(12));
accountLink.addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent arg0) {
try {
Desktop.getDesktop().browse(new URL("http://www.minecraft.net/register.jsp").toURI());
} catch (Exception e) {
e.printStackTrace();
}
}
});
accountLink.setForeground(new Color(0,0,0,129));
registerPanel.add(this.creditsVersion, "East");
registerPanel.add(new Panel(), "East");
}
} catch (Error localError) {}
loginPanel.add(registerPanel, "Center");
loginPanel.add(this.launchButton, "Center");
Panel anjoPanel = new Panel();
this.openManager.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
new MinecraftBackupManager().setVisible(true);
}
});
loginPanel.add(anjoPanel, "South");
panel.add(loginPanel, "South");
this.errorLabel.setFont(new Font(null, 2, 16));
this.errorLabel.setForeground(new Color(8388608));
panel.add(this.errorLabel, "North");
return panel;
}
public void setError(String errorMessage) {
removeAll();
add(buildLoginPanel());
this.errorLabel.setText(errorMessage);
validate();
}
public void loginOk() {
writeUsername();
}
}