diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/ui/GameSettingsPanel.form b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/ui/GameSettingsPanel.form
index 97e86eaf7..5c0cbc5a9 100755
--- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/ui/GameSettingsPanel.form
+++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/ui/GameSettingsPanel.form
@@ -35,10 +35,6 @@
-
-
-
-
@@ -56,9 +52,7 @@
-
-
-
+
@@ -69,7 +63,7 @@
-
+
@@ -91,6 +85,9 @@
+
+
+
@@ -105,63 +102,62 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
@@ -198,7 +194,7 @@
-
+
@@ -372,9 +368,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -566,6 +576,9 @@
+
+
+
@@ -590,6 +603,9 @@
+
+
+
@@ -976,16 +992,5 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/ui/GameSettingsPanel.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/ui/GameSettingsPanel.java
index f4f61f7b4..c216925d1 100755
--- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/ui/GameSettingsPanel.java
+++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/ui/GameSettingsPanel.java
@@ -261,7 +261,7 @@ public final class GameSettingsPanel extends RepaintPage implements DropTargetLi
tabVersionEdit = new NewTabPane();
((NewTabPane)tabVersionEdit).initializing = true;
- pnlSettings = new javax.swing.JPanel();
+ pnlSettings = new Page();
lblGameDir = new javax.swing.JLabel();
txtGameDir = new javax.swing.JTextField();
lblDimension = new javax.swing.JLabel();
@@ -283,7 +283,8 @@ public final class GameSettingsPanel extends RepaintPage implements DropTargetLi
cboJava = new javax.swing.JComboBox();
btnChoosingGameDir = new javax.swing.JButton();
btnCleanGame = new javax.swing.JButton();
- pnlAdvancedSettings = new javax.swing.JPanel();
+ lblUsesGlobal = new javax.swing.JLabel();
+ pnlAdvancedSettings = new Page();
lblJavaArgs = new javax.swing.JLabel();
txtJavaArgs = new javax.swing.JTextField();
txtMinecraftArgs = new javax.swing.JTextField();
@@ -298,8 +299,8 @@ public final class GameSettingsPanel extends RepaintPage implements DropTargetLi
lblPrecalledCommand1 = new javax.swing.JLabel();
txtWrapperLauncher = new javax.swing.JTextField();
chkDontCheckGame = new javax.swing.JCheckBox();
- pnlModManagement = new javax.swing.JPanel();
- pnlModManagementContent = new javax.swing.JPanel();
+ pnlModManagement = new Page();
+ pnlModManagementContent = new Page();
jScrollPane1 = new javax.swing.JScrollPane();
lstExternalMods = new javax.swing.JTable();
btnAddMod = new javax.swing.JButton();
@@ -324,7 +325,6 @@ public final class GameSettingsPanel extends RepaintPage implements DropTargetLi
btnShowLog = new javax.swing.JButton();
btnMakeLaunchScript = new javax.swing.JButton();
btnIncludeMinecraft = new javax.swing.JButton();
- lblUsesGlobal = new javax.swing.JLabel();
setBackground(new java.awt.Color(255, 255, 255));
setOpaque(false);
@@ -434,57 +434,65 @@ public final class GameSettingsPanel extends RepaintPage implements DropTargetLi
}
});
+ lblUsesGlobal.setText("jLabel1");
+ lblUsesGlobal.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
+ lblUsesGlobal.addMouseListener(new java.awt.event.MouseAdapter() {
+ public void mouseClicked(java.awt.event.MouseEvent evt) {
+ lblUsesGlobalMouseClicked(evt);
+ }
+ });
+
javax.swing.GroupLayout pnlSettingsLayout = new javax.swing.GroupLayout(pnlSettings);
pnlSettings.setLayout(pnlSettingsLayout);
pnlSettingsLayout.setHorizontalGroup(
pnlSettingsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(pnlSettingsLayout.createSequentialGroup()
- .addGap(0, 0, 0)
.addGroup(pnlSettingsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(lblJavaDir)
+ .addComponent(lblMaxMemory)
+ .addComponent(lblGameDir)
+ .addComponent(lblRunDirectory)
+ .addComponent(lblLauncherVisibility)
+ .addComponent(lblDimension))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addGroup(pnlSettingsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(cboLauncherVisibility, javax.swing.GroupLayout.Alignment.TRAILING, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(pnlSettingsLayout.createSequentialGroup()
- .addGroup(pnlSettingsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addComponent(lblJavaDir)
- .addComponent(lblMaxMemory)
- .addComponent(lblGameDir)
- .addComponent(lblRunDirectory)
- .addComponent(lblLauncherVisibility)
- .addComponent(lblDimension))
+ .addComponent(txtWidth, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addGroup(pnlSettingsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addComponent(cboLauncherVisibility, javax.swing.GroupLayout.Alignment.TRAILING, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
- .addGroup(pnlSettingsLayout.createSequentialGroup()
- .addComponent(txtWidth, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(lblDimensionX)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(txtHeight, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 63, Short.MAX_VALUE)
- .addComponent(chkFullscreen))
- .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, pnlSettingsLayout.createSequentialGroup()
- .addComponent(txtMaxMemory)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(lblMaxMemorySize))
- .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, pnlSettingsLayout.createSequentialGroup()
- .addComponent(txtGameDir)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(btnChoosingGameDir))
- .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, pnlSettingsLayout.createSequentialGroup()
- .addComponent(cboJava, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(txtJavaDir)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(btnChoosingJavaDir))
- .addComponent(cboRunDirectory, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
- .addGroup(pnlSettingsLayout.createSequentialGroup()
- .addComponent(btnDownloadAllAssets)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
- .addComponent(btnCleanGame)))
- .addGap(0, 0, 0))
+ .addComponent(lblDimensionX)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(txtHeight, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 88, Short.MAX_VALUE)
+ .addComponent(chkFullscreen))
+ .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, pnlSettingsLayout.createSequentialGroup()
+ .addComponent(txtMaxMemory)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(lblMaxMemorySize))
+ .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, pnlSettingsLayout.createSequentialGroup()
+ .addComponent(txtGameDir)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(btnChoosingGameDir))
+ .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, pnlSettingsLayout.createSequentialGroup()
+ .addComponent(cboJava, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(txtJavaDir)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(btnChoosingJavaDir))
+ .addComponent(cboRunDirectory, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
+ .addGroup(pnlSettingsLayout.createSequentialGroup()
+ .addComponent(btnDownloadAllAssets)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(btnCleanGame))
+ .addGroup(pnlSettingsLayout.createSequentialGroup()
+ .addComponent(lblUsesGlobal)
+ .addGap(0, 0, Short.MAX_VALUE))
);
pnlSettingsLayout.setVerticalGroup(
pnlSettingsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(pnlSettingsLayout.createSequentialGroup()
- .addGap(0, 0, 0)
+ .addComponent(lblUsesGlobal)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(pnlSettingsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(txtGameDir, javax.swing.GroupLayout.PREFERRED_SIZE, 26, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(lblGameDir)
@@ -515,7 +523,7 @@ public final class GameSettingsPanel extends RepaintPage implements DropTargetLi
.addComponent(lblDimensionX, javax.swing.GroupLayout.PREFERRED_SIZE, 26, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(lblDimension)
.addComponent(txtWidth, javax.swing.GroupLayout.PREFERRED_SIZE, 26, javax.swing.GroupLayout.PREFERRED_SIZE))
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 60, Short.MAX_VALUE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 39, Short.MAX_VALUE)
.addGroup(pnlSettingsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(btnDownloadAllAssets)
.addComponent(btnCleanGame))
@@ -907,14 +915,6 @@ public final class GameSettingsPanel extends RepaintPage implements DropTargetLi
}
});
- lblUsesGlobal.setText("jLabel1");
- lblUsesGlobal.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
- lblUsesGlobal.addMouseListener(new java.awt.event.MouseAdapter() {
- public void mouseClicked(java.awt.event.MouseEvent evt) {
- lblUsesGlobalMouseClicked(evt);
- }
- });
-
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(
@@ -930,10 +930,7 @@ public final class GameSettingsPanel extends RepaintPage implements DropTargetLi
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(btnShowLog)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(btnTestGame))
- .addGroup(layout.createSequentialGroup()
- .addComponent(lblUsesGlobal)
- .addGap(0, 0, Short.MAX_VALUE)))
+ .addComponent(btnTestGame)))
.addContainerGap())
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
@@ -946,9 +943,7 @@ public final class GameSettingsPanel extends RepaintPage implements DropTargetLi
.addGroup(layout.createSequentialGroup()
.addComponent(pnlTop, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(lblUsesGlobal)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(tabVersionEdit)
+ .addComponent(tabVersionEdit, javax.swing.GroupLayout.DEFAULT_SIZE, 309, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(btnTestGame)
@@ -957,7 +952,7 @@ public final class GameSettingsPanel extends RepaintPage implements DropTargetLi
.addContainerGap())
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
- .addContainerGap(421, Short.MAX_VALUE)
+ .addContainerGap(400, Short.MAX_VALUE)
.addComponent(btnIncludeMinecraft)
.addContainerGap()))
);
diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/ui/Page.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/ui/Page.java
index 3faefaf07..48e50678b 100755
--- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/ui/Page.java
+++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/ui/Page.java
@@ -20,6 +20,7 @@ package org.jackhuang.hellominecraft.launcher.ui;
import java.awt.AlphaComposite;
import java.awt.Graphics;
import java.awt.Graphics2D;
+import java.awt.image.BufferedImage;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import javax.swing.Timer;
@@ -80,6 +81,8 @@ public class Page extends JPanel implements Selectable {
});
}
+ BufferedImage cache = null;
+
@Override
public void paint(Graphics g) {
if (!(g instanceof Graphics2D)) {
@@ -91,18 +94,24 @@ public class Page extends JPanel implements Selectable {
super.paint(g);
return;
}
+
+ if (offsetX == 0) {
+ cache = new BufferedImage(getWidth(), getHeight(), BufferedImage.TYPE_INT_ARGB);
+ Graphics2D g2d = cache.createGraphics();
+ if (isOpaque()) {
+ g2d.setColor(getBackground());
+ g2d.fillRect(0, 0, getWidth(), getHeight());
+ }
+ super.paint(g2d);
+ g2d.dispose();
+ }
if (pgs > 1)
pgs = 1;
if (pgs < 0)
pgs = 0;
- Graphics2D g2 = (Graphics2D) g;
- if (isOpaque()) {
- g.setColor(getBackground());
- g.fillRect(0, 0, getWidth(), getHeight());
- } else
- g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, (float) (1 - pgs)));
- g.translate((int) (pgs * 50), 0);
- super.paint(g);
+ Graphics2D gg = (Graphics2D) g;
+ gg.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, (float) (1 - pgs)));
+ g.drawImage(cache, (int) (pgs * 50), 0, this);
}
double offsetX = ANIMATION_LENGTH;