mainframe.java
来自「java语言开发的P2P流媒体系统」· Java 代码 · 共 1,252 行 · 第 1/3 页
JAVA
1,252 行
setTitle(Messages.getString("MainFrame.WINDOW_TITLE_SERVER", Radio.s2sName)); //$NON-NLS-1$
}
else
{
setTitle(Messages.getString("MainFrame.WINDOW_TITLE_CLIENT", Radio.s2sName)); //$NON-NLS-1$
}
// Icon
ImageIcon icon = Icon.getImageIcon(s2sSmallIcon);
if (icon != null)
{
setIconImage(icon.getImage());
}
// Men黶
MenuInformationenAnzeigen.setEnabled(false);
//MenuBandbreiteSetzen.setEnabled(false);
MenuBar.add(MenuFile);
//MenuFile.add(MenuYellowPages); //Show the Stations
MenuFile.add(MenuInformationenAnzeigen); //Display Verbose Information
MenuFile.addSeparator();
MenuFile.add(MenuLog);
MenuFile.add(MenuLogAs);
MenuFile.add(MenuLogLoeschen); //Clear the Log
MenuFile.addSeparator();
MenuFile.add(MenuBeenden); //Exit
MenuBar.add(MenuMedia);
MenuMedia.add(MenuLaunchIntegratedPlayer); //Internal Player
MenuMedia.add(MenuMediaPlayerStarten); //External Player
MenuMedia.add(MenuRecordStream);
MenuBar.add(MenuEinstellungen); //Settings
MenuEinstellungen.add(MenuOptions);
MenuEinstellungen.addSeparator();
//MenuEinstellungen.add(MenuBandbreiteSetzen); //Set the upload bandwidth
MenuEinstellungen.add(MenuDebugNachrichtenAnzeigen);//Show Debug Messages
MenuBar.add(MenuHilfe); //Help
MenuHilfe.add(MenuHomepageBesuchen); //Visit the homepage
MenuHilfe.addSeparator();
MenuHilfe.add(MenuInfo); //About P2PRadio
setJMenuBar(MenuBar);
// Anzeigeelemente
GridBagLayout layout = new GridBagLayout();
LabelsPanel = new JPanel(layout);
InputPanel = new JPanel(layout);
GridBagConstraints left = new GridBagConstraints();
//left.weightx = 1.0;
left.gridwidth = GridBagConstraints.RELATIVE;
left.anchor = GridBagConstraints.EAST;
left.insets = new Insets(0, 0, 0, 5);
GridBagConstraints right = new GridBagConstraints();
right.fill = GridBagConstraints.HORIZONTAL;
right.weightx = 1.0;
right.gridwidth = GridBagConstraints.REMAINDER;
GridBagConstraints center = new GridBagConstraints();
center.gridy = GridBagConstraints.RELATIVE;
center.gridx = 1;
center.insets = new Insets (0, 0, 0, 180);
//center.anchor = GridBagConstraints.CENTER;
messages.setFont(LabelStationContent.getFont());
messages.setBorder(BorderFactory.createEmptyBorder(2, 2, 2, 2));
Font bold = LabelStation.getFont().deriveFont(Font.BOLD, LabelStation.getFont().getSize2D() + 2);
LabelStation.setFont(bold);
LabelSong.setFont(bold);
LabelStream.setFont(bold);
//LabelLag.setFont(bold);
LabelBandwidth.setFont(bold);
LabelServerUptime.setFont(bold);
Font plain = LabelStationContent.getFont().deriveFont(LabelStation.getFont().getSize2D() + 2);
LabelStationContent.setFont(plain);
LabelSongContent.setFont(plain);
LabelStreamContent.setFont(plain);
//LabelLagContent.setFont(plain);
LabelBandwidthContent.setFont(plain);
LabelServerUptimeContent.setFont(plain);
Font input = LabelStationContent.getFont().deriveFont(LabelStation.getFont().getSize2D() + 2);
//urlInputLabel.setFont(input);
//urlInput.setFont(input);
button1.setFont(plain);
button2.setFont(plain);
LabelsPanel.add(LabelStation);
layout.setConstraints(LabelStation, left);
LabelsPanel.add(LabelStationContent);
layout.setConstraints(LabelStationContent, right);
LabelsPanel.add(LabelSong);
layout.setConstraints(LabelSong, left);
LabelsPanel.add(LabelSongContent);
layout.setConstraints(LabelSongContent, right);
LabelsPanel.add(LabelStream);
layout.setConstraints(LabelStream, left);
LabelsPanel.add(LabelStreamContent);
layout.setConstraints(LabelStreamContent, right);
LabelsPanel.add(LabelBandwidth);
layout.setConstraints(LabelBandwidth, left);
LabelsPanel.add(LabelBandwidthContent);
layout.setConstraints(LabelBandwidthContent, right);
//LabelsPanel.add(LabelLag);
//layout.setConstraints(LabelLag, left);
//LabelsPanel.add(LabelLagContent);
//layout.setConstraints(LabelLagContent, right);
LabelsPanel.add(LabelServerUptime);
layout.setConstraints(LabelServerUptime, left);
LabelsPanel.add(LabelServerUptimeContent);
layout.setConstraints(LabelServerUptimeContent, right);
int borderSize = 7;
LabelsPanel.setBorder(BorderFactory.createCompoundBorder(BorderFactory.createEmptyBorder(borderSize, borderSize, borderSize, borderSize), BorderFactory.createCompoundBorder(BorderFactory.createEtchedBorder(), BorderFactory.createEmptyBorder(borderSize, borderSize, borderSize, borderSize))));
//InputPanel.setBorder(BorderFactory.createCompoundBorder(BorderFactory.createEmptyBorder(borderSize, borderSize, borderSize, borderSize), BorderFactory.createCompoundBorder(BorderFactory.createEtchedBorder(), BorderFactory.createEmptyBorder(borderSize, borderSize, borderSize, borderSize))));
InputPanel.add(urlInputLabel);
layout.setConstraints(urlInputLabel, left);
InputPanel.add(urlInput);
layout.setConstraints(urlInput, right);
InputPanel.add(button1);
layout.setConstraints(button1, center);
InputPanel.add(button2);
layout.setConstraints(button2, center);
//System.out.println("max" + volumeSlider.getMaximumSize() + "pre" + volumeSlider.getPreferredSize() + "min" + volumeSlider.getMinimumSize());
volumeSlider.setPreferredSize(new Dimension(100, 24));
//volumeSlider.setPaintTicks(true);
JPanel volumePanel = new JPanel();
JLabel lvolume = new JLabel(Messages.getString("MainFrame.VOLUME"));
volumePanel.add(lvolume);
volumePanel.add(volumeSlider);
InputPanel.add(volumePanel);
layout.setConstraints(volumePanel, center);
//InputPanel.add(lvolume);
//InputPanel.add(volumeSlider);
//layout.setConstraints(volumeSlider, left);
//layout.setConstraints(volumeSlider, right);
TopPanel = new JPanel(new BorderLayout());
TopPanel.add(LabelsPanel, BorderLayout.CENTER);
TopPanel.add(InputPanel, BorderLayout.SOUTH);
messages.setEditable(false);
messagesPane.setPreferredSize(new Dimension(400, 200));
MainPanel.add(TopPanel, BorderLayout.NORTH);
MainPanel.add(messagesPane, BorderLayout.CENTER);
tabbedPane.addTab(Messages.getString("MainFrame.MAIN_PANEL"),MainPanel);
getContentPane().add(tabbedPane, BorderLayout.CENTER);
volumeSlider.addChangeListener(new ChangeListener()
{
public void stateChanged(ChangeEvent e) {
JSlider source = (JSlider)e.getSource();
if (networkComponents != null)
{
networkComponents.setPlayerGain((double)source.getValue() / (double) VOLUME_SLIDER_MAX);
}
}
});
MenuRecordStream.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
new RecordThread().start();
}
});
MenuLogAs.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
//Create a file chooser
final JFileChooser fc = new JFileChooser();
//In response to a button click:
int returnVal = fc.showSaveDialog(selfReference);
if (returnVal == JFileChooser.APPROVE_OPTION)
{
File file = fc.getSelectedFile();
String logName = file.getAbsolutePath();
try
{
Handler logfileHandler = new FileLogHandler(logName);
logfileHandler.setFilter(selfReference);
logfileHandler.setFormatter(new LogFormatter());
Logger.getLogger().addHandler(logfileHandler);
}
catch (IOException error)
{
//exit(Messages.getString("Radio.INVALID_LOGFILE_NAME"), noGUI); //$NON-NLS-1$
}
Logger.info("MainFrame","MainFrame.OUTPUTTING_LOG", logName);
} else {
// log.append("Open command cancelled by user." + newline);
}
}
});
MenuLog.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
Radio.logByDate(selfReference);
}
});
// ActionListener f黵 die Men黶
MenuYellowPages.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
BrowserLauncher.startBrowserExtended("http://" + YellowPages.YP_HOST + YellowPages.YP_DIR, MainFrame.this); //$NON-NLS-1$
}
});
MenuLaunchIntegratedPlayer.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent arg0) {
Radio.playpause(networkComponents, selfReference);
}
});
MenuMediaPlayerStarten.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
HttpPlayer httpPlayer = null;
if (networkComponents != null)
httpPlayer = networkComponents.getHttpPlayer();
if (httpPlayer != null)
{
new MediaPlayerLauncher(peer.getListenBuffer(), httpPlayer).start();
}
}
});
MenuInformationenAnzeigen.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
String webAddress = "http://localhost:" + (peer.getSocketAddress().getPort() + Peer.WEBINTERFACE_PORT_OFFSET) + "/"; //$NON-NLS-1$ //$NON-NLS-2$
BrowserLauncher.startBrowserExtended(webAddress, MainFrame.this);
}
});
MenuLogLoeschen.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
messages.setText(null);
}
});
MenuBeenden.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
exit();
}
});
MenuDebugNachrichtenAnzeigen.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
Radio.displayDebugMessages = MenuDebugNachrichtenAnzeigen.isSelected();
String[] xdebug = {"general", "logging", "displaydebug", SettingsXML.FALSE };
if (MenuDebugNachrichtenAnzeigen.isSelected())
xdebug[3] = SettingsXML.TRUE;
xml.overwrite(xdebug);
xml.flush();
}
});
MenuOptions.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
MenuOptions.setEnabled(false);
optionsPanel = new OptionsPanel(selfReference);
tabbedPane.addTab(Messages.getString("MainFrame.OPTIONS_PANEL"), optionsPanel);
tabbedPane.setSelectedComponent(optionsPanel);
}
});
/*
MenuBandbreiteSetzen.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
Object maxUploadBandwidthString = JOptionPane.showInputDialog(MainFrame.this, Messages.getString("RadioGUI.ENTER_BANDWIDTH_LIMIT", new Object[]{Radio.Name, new Integer(Peer.MAX_NUMBER_OF_CHILDREN)}), Messages.getString("RadioGUI.ENTER_BANDWIDTH_LIMIT_TITLE"), JOptionPane.QUESTION_MESSAGE, null, null, Double.toString(maxUploadBandwidth)); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
if (maxUploadBandwidthString == null)
{
// Benutzer hat das Fenster geschlossen
return;
}
String[] tree = {"network", "maxupload", (String)maxUploadBandwidthString};
xml.overwrite(tree);
xml.flush();
int maxUploadBandwidth = 0;
try
{
maxUploadBandwidth = Integer.parseInt((String)maxUploadBandwidthString);
}
catch (NumberFormatException exception)
{
JOptionPane.showMessageDialog(MainFrame.this, Messages.getString("RadioGUI.INVALID_BANDWIDTH_LIMIT"), Messages.getString("GENERAL_ERROR"), JOptionPane.ERROR_MESSAGE, null); //$NON-NLS-1$ //$NON-NLS-2$
}
maxUploadBandwidthSet = true;
if (maxUploadBandwidth != 0)
{
Logger.info("MainFrame","MainFrame.BANDWIDTH_LIMIT_SET_TO", new Integer(maxUploadBandwidth));
if (peer != null)
{
peer.setMaxUploadBandwidth(maxUploadBandwidth);
}
}
}
}); */
MenuHomepageBesuchen.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
BrowserLauncher.startBrowserExtended(Radio.HOMEPAGE, MainFrame.this);
}
});
MenuInfo.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
AboutPanel = new JPanel();
BoxLayout aboutLayout = new BoxLayout(AboutPanel, BoxLayout.PAGE_AXIS);
AboutPanel.setLayout(aboutLayout);
JTabbedPane aboutPane = new JTabbedPane();
JPanel aboutP2PRadio = new JPanel();
BoxLayout aboutP2PRadioLayout = new BoxLayout(aboutP2PRadio, BoxLayout.PAGE_AXIS);
aboutP2PRadio.setLayout(aboutP2PRadioLayout);
JLabel p2prMessage = new JLabel(Messages.getString("MainFrame.ABOUT_P2PRADIO_MESSAGE", new String[]{Radio.Name, Radio.Version}), Icon.getImageIcon(p2pradioIcon), JLabel.LEFT);
aboutP2PRadio.add(p2prMessage);
JPanel aboutStream2Stream = new JPanel();
BoxLayout aboutS2SLayout = new BoxLayout(aboutStream2Stream, BoxLayout.PAGE_AXIS);
aboutStream2Stream.setLayout(aboutS2SLayout);
JLabel s2sMessage = new JLabel(Messages.getString("MainFrame.ABOUT_STREAM2STREAM_MESSAGE", new String[]{Radio.s2sName, Radio.s2sVersion, Radio.s2sHyphenName, "" + Radio.networkVersion}), Icon.getImageIcon(s2sIcon), JLabel.LEFT);
aboutStream2Stream.add(s2sMessage);
JPanel aboutNDT = new JPanel();
BoxLayout aboutNDTLayout = new BoxLayout(aboutNDT, BoxLayout.PAGE_AXIS);
aboutNDT.setLayout(aboutNDTLayout);
JLabel ndtMessage = new JLabel(Messages.getString("MainFrame.ABOUT_NDT"));
aboutNDT.add(ndtMessage);
JPanel aboutjlGui = new JPanel();
BoxLayout aboutjlLayout = new BoxLayout(aboutjlGui, BoxLayout.PAGE_AXIS);
aboutjlGui.setLayout(aboutjlLayout);
JLabel jlGuiPicture = new JLabel(Icon.getImageIcon("jlgui.GIF"));
JLabel jlGuiMessage = new JLabel(Messages.getString("MainFrame.ABOUT_JLGUI_MESSAGE"));
aboutjlGui.add(jlGuiPicture);
aboutjlGui.add(jlGuiMessage);
//JOptionPane.showMessageDialog(aboutP2PRadio, Messages.getString("MainFrame.ABOUT_MESSAGE", new String[]{Radio.Name, Radio.Version}), Messages.getString("MainFrame.ABOUT_TITLE", Radio.Name), JOptionPane.INFORMATION_MESSAGE, Icon.getImageIcon(p2pradioIcon)); //$NON-NLS-1$ //$NON-NLS-2$
aboutPane.addTab(Messages.getString("MainFrame.ABOUT_STREAM2STREAM_TITLE", Radio.s2sName), aboutStream2Stream);
aboutPane.addTab(Messages.getString("MainFrame.ABOUT_P2PRADIO_TITLE", Radio.Name), aboutP2PRadio);
aboutPane.addTab(Messages.getString("MainFrame.ABOUT_NDT_TITLE"), aboutNDT);
aboutPane.addTab(Messages.getString("MainFrame.ABOUT_JLGUI_TITLE"), aboutjlGui);
AboutPanel.add(aboutPane);
JButton OK = new JButton(Messages.getString("MainFrame.ABOUT_OK"));
OK.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
tabbedPane.remove(AboutPanel);
MenuInfo.setEnabled(true);
}
});
AboutPanel.add(OK);
tabbedPane.addTab(Messages.getString("MainFrame.ABOUT_TITLE"), AboutPanel);
tabbedPane.setSelectedComponent(AboutPanel);
MenuInfo.setEnabled(false);
}
});
stationPanel = new StationPanel(this);
tabbedPane.addTab(Messages.getString("MainFrame.STATION_PANEL"), stationPanel);
if (!isServer && !test)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?