关闭。这个问题需要细节或清晰。它目前不接受答案。
**想改进这个问题吗?**通过编辑这个帖子来添加细节并澄清问题。
5天前关门了。
改进这个问题
我创建了这个图形界面。我想激活“新建文件”菜单,这样,当您单击此菜单时,将显示一个新页面,而不是一个新窗口。我该怎么做?
我的代码:
public class Fenetre extends JPanel implements MouseListener, MouseMotionListener {
private static final long serialVersionUID = 1L;
static final int CREATE_VERTEX = 1;
static final int START_CREATE_EDGE = 2;
static final int SERIES_CREATE_EDGE = 3;
static final int voisin = 5;
int state;
Vertex vertexselected;
private JFrame fen = new JFrame();
Fenetre(){
addMouseListener(this);
addMouseMotionListener(this);
fen.setTitle("INTERFACE GRAPHIQUE");
fen.setSize(600,400);
fen.setLocationRelativeTo(null);
fen.add(this, BorderLayout.CENTER);
fen.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
fen.setJMenuBar(createmenu());
fen.setVisible(true);
fen.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent arg0) {
// TODO Auto-generated method stub
int clikedButton = JOptionPane.showConfirmDialog(fen, "Voulez-vous enregistrer avant de quitter ?");
if (clikedButton == JOptionPane.YES_OPTION) {
enregistrement();
fen.dispose();
}
if (clikedButton == JOptionPane.NO_OPTION) {
fen.dispose();
}
}
});
}
JMenuBar createmenu() {
JMenuBar MyMenuBar = new JMenuBar();
MyMenuBar.setBounds(0, 0, 600, 30);
JMenu MenuFichier = new JMenu("Fichier");
MyMenuBar.add(MenuFichier);
MenuFichier.setMnemonic( 'F' );
JMenu MenuEdition = new JMenu("Edition");
MyMenuBar.add(MenuEdition);
MenuEdition.setMnemonic( 'E' );
JMenuItem MenuNouveau = new JMenuItem("New file");
MenuNouveau.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method s/tub
}
});
MenuNouveau.setMnemonic( 'N' );
MenuNouveau.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, KeyEvent.CTRL_DOWN_MASK));
MenuNouveau.setIcon(new ImageIcon("icons/new.png"));
MenuFichier.add(MenuNouveau);
JMenuItem MenuOuvrir = new JMenuItem("Ouvrir");
MenuOuvrir.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
}
});
MenuOuvrir.setMnemonic( 'O' );
MenuOuvrir.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, KeyEvent.CTRL_DOWN_MASK));
MenuOuvrir.setIcon(new ImageIcon("icons/open.png"));
MenuFichier.add(MenuOuvrir);
JMenuItem MenuEnregistrer = new JMenuItem("Enregistrer");
MenuEnregistrer.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
enregistrement();
}
});
MenuEnregistrer.setMnemonic( 'E' );
MenuEnregistrer.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, KeyEvent.CTRL_DOWN_MASK));
MenuEnregistrer.setIcon(new ImageIcon("icons/save.png"));
MenuFichier.add(MenuEnregistrer);
MenuFichier.addSeparator();
JMenuItem MenuQuitter = new JMenuItem("Quitter");
MenuQuitter.addActionListener( (e) -> System.exit(0));
MenuQuitter.setMnemonic( 'Q' );
MenuQuitter.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_E, KeyEvent.ALT_DOWN_MASK));
MenuQuitter.setIcon(new ImageIcon("icons/exit.png"));
MenuFichier.add(MenuQuitter);
JMenuItem MenuSommet = new JMenuItem("Creer un sommet");
MenuSommet.addActionListener( new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
state = CREATE_VERTEX;
}
});
MenuEdition.add(MenuSommet);
JMenuItem MenuArrete = new JMenuItem("Creer un arrete");
MenuArrete.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
state = START_CREATE_EDGE;
}
});
MenuEdition.add(MenuArrete);
return MyMenuBar;
}
Vertex vertexvoisin(int x, int y) {
Iterator<Vertex> it = Vertex.iterator();
while (it.hasNext()) {
Vertex v = (Vertex) it.next();
if (Math.abs(x - v.getX()) + Math.abs(y - v.getY()) < voisin)
return v;
}
return null;
}
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
Vertex a;
switch(state) {
case CREATE_VERTEX:
new Vertex(e.getX(), e.getY());
repaint();
return;
case START_CREATE_EDGE:
vertexselected = vertexvoisin(e.getX(), e.getY());
if (vertexselected == null)
return;
state = SERIES_CREATE_EDGE;
return;
case SERIES_CREATE_EDGE:
a = vertexvoisin(e.getX(), e.getY());
if (a == null || a.equals(vertexselected))
return;
new Edge(vertexselected, a);
repaint();
state = START_CREATE_EDGE;
return;
}
}
public void mouseDragged(MouseEvent e) {}
public void mouseMoved(MouseEvent e) {}
public void mouseClicked(MouseEvent e) {}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}
public void paint(Graphics gr) {
super.paint(gr);
Color color = gr.getColor();
gr.setColor(Color.black);
Iterator<Edge> itE = Edge.iterator();
while (itE.hasNext()) {
Edge a = itE.next();
gr.drawLine(a.getOrg().getX(), a.getOrg().getY(), a.getExt().getX(), a.getExt().getY());
}
Iterator<Vertex> itV = Vertex.iterator();
while (itV.hasNext()) {
Vertex s = itV.next();
gr.setColor(Color.black);
gr.fillOval(s.getX() - 5, s.getY() - 5, 10, 10);
if (s.getEtiquette() != null) {
gr.setColor(Color.blue);
gr.drawString(s.getEtiquette(), s.getX() + 5, s.getY() - 5);
}
}
gr.setColor(color);
}
private void enregistrement() {
JFileChooser file = new JFileChooser();
int res = file.showSaveDialog(this);
if(res != JFileChooser.APPROVE_OPTION)
return;
try {
PrintStream print = new PrintStream(file.getSelectedFile());
print.println(Vertex.numberVertex());
Iterator<Vertex> ItV = Vertex.iterator();
while(ItV.hasNext()) {
print.println(ItV.next());
}
print.println(Edge.numberEdge());
Iterator<Edge> ItE = Edge.iterator();
while(ItE.hasNext()) {
print.println(ItE.next());
}
print.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
return;
}
}
public static void main (String[] args) throws UnsupportedLookAndFeelException {
UIManager.setLookAndFeel(new NimbusLookAndFeel());
new Fenetre();
}
}
暂无答案!
目前还没有任何答案,快来回答吧!