public class DlgShowTable extends JDialog

本文介绍了一个简单的Java Swing对话框实现案例,该对话框用于显示表格数据。通过继承JDialog并使用BorderLayout布局管理器,文章展示了如何将JTable组件嵌入到对话框中,并实现了基本的展示功能。

/**
 *
 */
package gui;

import java.awt.BorderLayout;
import java.awt.GridBagLayout;

import javax.swing.JDialog;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;

/**
 * @author Administrator
 *
 */
public class DlgShowTable extends JDialog
{
    BorderLayout borderLayout = new BorderLayout();
  //  GridBagLayout gridbagLayout = new GridBagLayout();
    JPanel basePanel = new JPanel(borderLayout);
 //   border
   // JPanel panelplatForm = new JPanel(borderLayout);
   
 /**
  *
  */
 public DlgShowTable(JTable table)
 {
  basePanel.add(new JScrollPane(table));
  // TODO Auto-generated constructor stub
  this.getContentPane().add(basePanel, BorderLayout.CENTER);
  //add(basePanel);
  this.show();
  System.out.println("dialog is called");
  
 }

 /**
  * @param args
  */
 public static void main(String[] args)
 {
  // TODO Auto-generated method stub

 }

}

import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; // 主窗口类 class MainFrame extends JFrame { private JPanel mainPanel; private JMenuBar menuBar; private JMenu operationMenu, helpMenu; private JMenuItem lineItem, stationItem, ticketNumItem, paymentItem; private JMenuItem guideItem, aboutItem; private JPopupMenu popupMenu; private JMenuItem restartItem, exitItem; public MainFrame() { setTitle("地铁自动售票机"); setSize(1024, 768); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); mainPanel = new JPanel(); mainPanel.setBackground(Color.LIGHT_GRAY); JLabel welcomeLabel = new JLabel("欢迎使用地铁自动售票机,请选择线路"); mainPanel.add(welcomeLabel); add(mainPanel); menuBar = new JMenuBar(); operationMenu = new JMenu("操作"); helpMenu = new JMenu("帮助"); lineItem = new JMenuItem("线路选择"); stationItem = new JMenuItem("站点选择"); ticketNumItem = new JMenuItem("票数输入"); paymentItem = new JMenuItem("支付确认"); guideItem = new JMenuItem("操作指南"); aboutItem = new JMenuItem("关于我们"); operationMenu.add(lineItem); operationMenu.add(stationItem); operationMenu.add(ticketNumItem); operationMenu.add(paymentItem); helpMenu.add(guideItem); helpMenu.add(aboutItem); menuBar.add(operationMenu); menuBar.add(helpMenu); setJMenuBar(menuBar); lineItem.addActionListener(e -> new LineDialog(this).setVisible(true)); stationItem.addActionListener(e -> new StationDialog(this, "1号线").setVisible(true)); ticketNumItem.addActionListener(e -> new TicketNumDialog(this).setVisible(true)); paymentItem.addActionListener(e -> new PaymentDialog(this, 1, 5).setVisible(true)); guideItem.addActionListener(e -> JOptionPane.showMessageDialog(this, "操作指南:先选择线路,再选择站点,输入票数,最后进行支付。", "操作指南", JOptionPane.INFORMATION_MESSAGE)); aboutItem.addActionListener(e -> JOptionPane.showMessageDialog(this, "这是一个地铁自动售票机系统。", "关于我们", JOptionPane.INFORMATION_MESSAGE)); popupMenu = new JPopupMenu(); restartItem = new JMenuItem("重新开始"); exitItem = new JMenuItem("退出"); popupMenu.add(restartItem); popupMenu.add(exitItem); mainPanel.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { if (e.getButton() == MouseEvent.BUTTON3) { popupMenu.show(mainPanel, e.getX(), e.getY()); } } }); restartItem.addActionListener(e -> { // 重置操作流程 JOptionPane.showMessageDialog(this, "操作已重置,请重新开始。", "重新开始", JOptionPane.INFORMATION_MESSAGE); }); exitItem.addActionListener(e -> System.exit(0)); } } // 线路选择对话框 class LineDialog extends JDialog { private JButton line1Button, line2Button; private JButton confirmButton, cancelButton; public LineDialog(JFrame parent) { super(parent, "选择线路", true); setSize(300, 200); JPanel panel = new JPanel(); line1Button = new JButton("1号线"); line2Button = new JButton("2号线"); confirmButton = new JButton("确定"); cancelButton = new JButton("取消"); panel.add(line1Button); panel.add(line2Button); panel.add(confirmButton); panel.add(cancelButton); add(panel); confirmButton.addActionListener(e -> { new StationDialog(parent, "1号线").setVisible(true); dispose(); }); cancelButton.addActionListener(e -> dispose()); } } // 站点选择对话框 class StationDialog extends JDialog { private JList<String> stationList; private JButton prevButton, nextButton; public StationDialog(JFrame parent, String line) { super(parent, "选择站点", true); setSize(300, 200); DefaultListModel<String> listModel = new DefaultListModel<>(); if (line.equals("1号线")) { listModel.addElement("站A"); listModel.addElement("站B"); listModel.addElement("站C"); } stationList = new JList<>(listModel); prevButton = new JButton("上一步"); nextButton = new JButton("下一步"); JPanel panel = new JPanel(); panel.add(new JScrollPane(stationList)); panel.add(prevButton); panel.add(nextButton); add(panel); prevButton.addActionListener(e -> { new LineDialog(parent).setVisible(true); dispose(); }); nextButton.addActionListener(e -> { new TicketNumDialog(parent).setVisible(true); dispose(); }); } } // 票数输入对话框 class TicketNumDialog extends JDialog { private JLabel ticketLabel; private JTextField ticketField; private JButton confirmButton, resetButton; public TicketNumDialog(JFrame parent) { super(parent, "输入票数", true); setSize(300, 200); ticketLabel = new JLabel("请输入票数(1 - 10张)"); ticketField = new JTextField(5); confirmButton = new JButton("确认"); resetButton = new JButton("重置"); JPanel panel = new JPanel(); panel.add(ticketLabel); panel.add(ticketField); panel.add(confirmButton); panel.add(resetButton); add(panel); confirmButton.addActionListener(e -> { try { int num = Integer.parseInt(ticketField.getText()); if (num >= 1 && num <= 10) { new PaymentDialog(parent, num, 5).setVisible(true); dispose(); } else { JOptionPane.showMessageDialog(this, "票数输入无效,请输入1 - 10之间的数字。", "错误提示", JOptionPane.ERROR_MESSAGE); } } catch (NumberFormatException ex) { JOptionPane.showMessageDialog(this, "输入无效,请输入有效的数字。", "错误提示", JOptionPane.ERROR_MESSAGE); } }); resetButton.addActionListener(e -> ticketField.setText("")); } } // 支付确认对话框 class PaymentDialog extends JDialog { private JLabel amountLabel; private JButton cashButton, scanButton; private JButton payButton, cancelPayButton; public PaymentDialog(JFrame parent, int ticketNum, int price) { super(parent, "支付确认", true); setSize(300, 200); int totalAmount = ticketNum * price; amountLabel = new JLabel("总金额:" + totalAmount + " 元"); cashButton = new JButton("现金支付"); scanButton = new JButton("扫码支付"); payButton = new JButton("支付完成"); cancelPayButton = new JButton("取消支付"); JPanel panel = new JPanel(); panel.add(amountLabel); panel.add(cashButton); panel.add(scanButton); panel.add(payButton); panel.add(cancelPayButton); add(panel); payButton.addActionListener(e -> { new ChangeDialog(parent, totalAmount, 100).setVisible(true); dispose(); }); cancelPayButton.addActionListener(e -> dispose()); } } // 找零提示对话框 class ChangeDialog extends JDialog { private JLabel changeLabel; private JButton confirmButton; public ChangeDialog(JFrame parent, int totalAmount, int paidAmount) { super(parent, "找零提示", true); setSize(300, 200); int change = paidAmount - totalAmount; changeLabel = new JLabel("找零金额:" + change + " 元"); confirmButton = new JButton("确定"); JPanel panel = new JPanel(); panel.add(changeLabel); panel.add(confirmButton); add(panel); confirmButton.addActionListener(e -> { dispose(); // 返回主窗口 }); } } public class MetroTicketMachineApp { public static void main(String[] args) { SwingUtilities.invokeLater(() -> { MainFrame mainFrame = new MainFrame(); mainFrame.setVisible(true); }); } } 将支付方式改为输入金额然后找回
最新发布
11-05
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值