Code: Select all
public class HDApp {
private final JFrame frame = new JFrame();
private final JTabbedPane tabPanel = new JTabbedPane();
private final MainPanel mainPanel = new MainPanel();
private final GearPanel gearPanel = new GearPanel();
private final RulesPanel rulesPanel = new RulesPanel();
public HDApp() {
initComponents();
}
private void initComponents() {
frame.getContentPane().setBackground(new Color(51,51,51));
frame.setTitle("Helldivers 2 Randomizer");
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(1042, 540);
tabPanel.setBackground(new Color(51,51,51));
tabPanel.setBackground(new Color(51,51,51));
tabPanel.setForeground(Color.WHITE);
tabPanel.setBorder(null);
JPanel randomizerPage = mainPanel.getMainPanel();
tabPanel.addTab("Randomizer", randomizerPage);
JPanel gearPage = gearPanel.getPanel();
tabPanel.addTab("Gear Information", gearPage);
JScrollPane rulePage = rulesPanel.getjScrollPane();
tabPanel.addTab("Randomzier Rules", rulePage);
frame.add(tabPanel);
frame.setVisible(true);
}
Code: Select all
public class CustomTab extends JPanel {
private final JTabbedPane pane;
private final String title;
public CustomTab(JTabbedPane pane, String title) {
this.pane = pane;
this.title = title;
setOpaque(false);
setBackground(new Color(51,51,51));
setFont(new Font("FS Sinclair", Font.BOLD, 14));
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
int index = pane.indexOfTab(title);
boolean selected = (index == pane.getSelectedIndex());
Graphics2D g2 = (Graphics2D) g;
g2.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
if (selected) {
g2.setColor(new Color(51, 51, 51));
g2.fillRect(0, 0, getWidth(), getHeight());
System.out.println();
}
g2.setColor(Color.WHITE);
FontMetrics fm = g2.getFontMetrics();
int textWidth = fm.stringWidth(title);
int textHeight = fm.getAscent();
g2.drawString(title, (getWidth() - textWidth) / 2, (getHeight() + textHeight) / 2 - 2);
if (selected) {
g2.setColor(Color.WHITE);
g2.fillRect(0, getHeight() - 3, getWidth(), 3);
}
}
@Override
public Dimension getPreferredSize() {
return new Dimension(120, 15);
}
Also habe ich eine noch einfachere Version ausprobiert und das hat nicht funktioniert
Code: Select all
public CustomTab(JTabbedPane pane, String title) {
setOpaque(true);
setFont(new Font("FS Sinclair", Font.BOLD, 14));
setPreferredSize(new Dimension(120, 15));
JLabel label = new JLabel(title, SwingConstants.CENTER);
label.setForeground(Color.WHITE);
setLayout(new BorderLayout());
add(label);
pane.addChangeListener(e -> {
boolean selected = (pane.getSelectedIndex() == pane.indexOfTab(title));
setBackground(selected ? new Color(51, 51, 51) : UIManager.getColor("TabbedPane.background"));
});
}
Mobile version