I've written a code in java that solves sudokus and I used Java Applet for designing it. Now, I'm trying to use Java Swing to make it look better and to add some features like "saving" a sudoku board etc. Unfortunately, I'm not too familiar with Java Swing and I'm having some trouble using Graphics(to draw the board 9x9). I also don't understand why I can't extend JFrame and JPanel at the same class.
import java.applet.*;
import javax.swing.*;
import javax.swing.border.*;
import java.awt.*;
import java.awt.event.*;
import java.net.URL;
import java.util.Scanner;
class Sudoku2 extends JPanel implements ActionListener, MouseListener,
ItemListener {
public JPanel createContentPane() {
JPanel GUI = new JPanel();
GUI.setLayout(null);
JPanel titlePanel = new JPanel();
titlePanel.setLayout(null);
titlePanel.setLocation(10, 0);
titlePanel.setSize(250, 30);
GUI.add(titlePanel);
JPanel scorePanel = new JPanel();
scorePanel.setLayout(null);
scorePanel.setLocation(10, 40);
scorePanel.setSize(250, 30);
GUI.add(scorePanel);
JPanel buttonPanel = new JPanel();
buttonPanel.setLayout(null);
buttonPanel.setLocation(0, 0);
buttonPanel.setSize(300, 200);
GUI.add(buttonPanel);
JButton solve = new JButton("Solve");
solve.setLocation(20, 100);
solve.setSize(100, 30);
buttonPanel.add(solve);
JButton clear_digit = new JButton("Clear Digit");
clear_digit.setLocation(20, 140);
clear_digit.setSize(100, 30);
buttonPanel.add(clear_digit);
GUI.setOpaque(true);
return GUI;
}
public JMenuBar createMenuBar() {
JMenuBar menuBar = new JMenuBar();
JMenu Menu = new JMenu("File");
menuBar.add(Menu);
JMenuItem new1 = new JMenuItem("New");
new1.addActionListener(this);
JMenuItem load = new JMenuItem("Load");
load.addActionListener(this);
JMenuItem save1 = new JMenuItem("Save");
save1.addActionListener(this);
JMenuItem save2 = new JMenuItem("Save As...");
save2.addActionListener(this);
Menu.add(new1);
Menu.add(load);
Menu.add(save1);
Menu.add(save2);
return menuBar;
}
private static void createAndShowGUI() {
JFrame frame = new JFrame("Sudoku Solver");
Sudoku2 demo = new Sudoku2();
frame.setJMenuBar(demo.createMenuBar());
frame.setContentPane(demo.createContentPane());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(500, 500);
frame.setVisible(true);
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawLine(50, 50, 100, 100);
}
@Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
public void actionPerformed(ActionEvent e) {
}
public void itemStateChanged(ItemEvent e) {
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}
}
`