Я пытаюсь сделать простую многопанельную программу с панелями «запуск», «запуск» и «настройки». У меня проблема с попыткой использовать краску для рисования на панели «Выполнить». это код, и проблема в том, что он заставляет начальный экран появляться с наложенным рабочим экраном и с дополнительным набором кнопок.
package mainPackage;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class mainFrame extends JFrame{
//declarations
JFrame frame = new JFrame("javaEyeGazeApp");
JPanel panelCont = new JPanel();
JPanel mainPanel = new JPanel();
JPanel runPanel = new runPanel();
JPanel settingsPanel = new JPanel();
JButton mainToRun = new JButton("Run");
JButton mainToSettings = new JButton("Settings");
JButton settingsToMain = new JButton("Main Menu");
public CardLayout cl = new CardLayout();
public mainFrame(){
panelCont.setLayout(cl);
//adding buttons to panels and setting bg colours
settingsPanel.add(settingsToMain);
mainPanel.setBackground(Color.YELLOW);
runPanel.setBackground(Color.WHITE);
settingsPanel.setBackground(Color.WHITE);
//adding panels to card layout
panelCont.add(mainPanel, "main");
panelCont.add(runPanel, "run");
panelCont.add(settingsPanel, "settings");
//set default view
// cl.show(panelCont,"settings");
//start screen aesthetics
mainPanel.setLayout(new GridBagLayout());
GridBagConstraints gc = new GridBagConstraints();
gc.gridy = 0;
gc.gridx = 0;
gc.weighty = .4;
gc.weightx = 1;
gc.gridy = 1;
gc.gridx = 0;
gc.weighty = .1;
gc.weightx = .5;
mainPanel.add(mainToRun);
gc.gridx = 2;
mainPanel.add(mainToSettings);
//button action listeners
mainToRun.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent actionEvent) {
cl.show(panelCont, "run");
}
});
mainToSettings.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent actionEvent) {
cl.show(panelCont, "settings");
}
});
settingsToMain.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent actionEvent) {
cl.show(panelCont, "main");
}
});
//housekeeping
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
int scHeight = screenSize.height;
int scWidth = screenSize.width;
frame.add(panelCont);
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.pack();
frame.setVisible(true);
frame.setSize(scWidth, scHeight);
frame.setResizable(false);
}
public void paint(Graphics g){
g.drawLine(15,15,150,150);
}
}
и мой класс runPanel выглядит как
package mainPackage;
import javax.swing.*;
import java.awt.*;
public class runPanel extends JPanel {
final Button left = new Button(0,0);
final Button right = new Button(1,0);
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
int scHeight = screenSize.height;
int scWidth = screenSize.width;
public runPanel(){
super();
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
}
public void paint(Graphics g){
g.setColor(Color.ORANGE);
g.drawRect(0,0,scWidth/2,scHeight);
g.setColor(Color.YELLOW);
g.drawRect(scWidth/2,0,scWidth/2,scHeight);
}
}