/** * Create a button to go inside of the toolbar. By default this will load an image resource. The * image filename is relative to the classpath (including the '.' directory if its a part of the * classpath), and may either be in a JAR file or a separate file. * * @param key The key in the resource file to serve as the basis of lookups. */ protected JButton createToolbarButton(String key) { URL url = getResource(key + imageSuffix); JButton b = new JButton(new ImageIcon(url)) { @Override public float getAlignmentY() { return 0.5f; } }; b.setRequestFocusEnabled(false); b.setMargin(new Insets(1, 1, 1, 1)); String astr = getProperty(key + actionSuffix); if (astr == null) { astr = key; } Action a = getAction(astr); if (a != null) { b.setActionCommand(astr); b.addActionListener(a); } else { b.setEnabled(false); } String tip = getResourceString(key + tipSuffix); if (tip != null) { b.setToolTipText(tip); } return b; }
// 部屋に入室している状態のコンポーネント設定 private void enteredRoom(String roomName) { this.roomName = roomName; setTitle(APPNAME + " " + roomName); msgTextField.setEnabled(true); submitButton.setEnabled(true); addRoomButton.setEnabled(false); enterRoomButton.setText("退室"); enterRoomButton.setActionCommand("exitRoom"); }
protected void addMyControls() { // add browser-style control buttons JButton home = new JButton(new ImageIcon("data/Home24.gif")); JButton back = new JButton(new ImageIcon("data/Back24.gif")); JButton fwd = new JButton(new ImageIcon("data/Forward24.gif")); home.setToolTipText("Home"); home.addActionListener(this); home.setActionCommand(homeCmd); back.setToolTipText("Back"); back.addActionListener(this); back.setActionCommand(backCmd); back.setEnabled(false); // initially disabled fwd.setToolTipText("Forward"); fwd.addActionListener(this); fwd.setActionCommand(forwardCmd); fwd.setEnabled(false); // initially disabled add(home); add(back); add(fwd); add(new JToolBar.Separator()); // set built-in index variables homeIndex = getComponentIndex(home); backIndex = getComponentIndex(back); forwardIndex = getComponentIndex(fwd); JComboBox comboBox = new JComboBox(); comboBox.setEditable(true); comboBox.addActionListener(this); comboBox.setActionCommand(comboCmd); comboBox.setMaximumRowCount(3); // don't let it get too long comboBox.insertItemAt(mainBrowserURL, 0); // don't start it out empty add(comboBox); comboBoxIndex = getComponentIndex(comboBox); }
// 部屋に入室していない状態のコンポーネント設定 private void exitedRoom() { roomName = null; setTitle(APPNAME); msgTextField.setEnabled(false); submitButton.setEnabled(false); addRoomButton.setEnabled(true); enterRoomButton.setText("入室"); enterRoomButton.setActionCommand("enterRoom"); userList.setModel(new DefaultListModel()); }
private JPanel getContentPanel() { JPanel contentPanel1 = new JPanel(); summaryPanel = new JPanel(); resultPanel = new JPanel(); jPanel1 = new javax.swing.JPanel(); createFilesButton = new JButton(); showFilesButton = new JButton(); contentPanel1.setLayout(new java.awt.BorderLayout()); jPanel1.setLayout(new MigLayout("wrap 1")); /* Summary */ summaryPanel.setLayout(new MigLayout("wrap 1,w 400")); summaryPanel.setBorder( BorderFactory.createTitledBorder( BorderFactory.createEtchedBorder(), "Summary", TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, new Font("Courier", Font.BOLD, 14))); summaryField = new JTextArea("", 10, 30); summaryField.setLineWrap(true); summaryField.setWrapStyleWord(true); summaryField.setEditable(false); JScrollPane summaryScrollPane = new JScrollPane(summaryField); summaryScrollPane.setVerticalScrollBarPolicy( JScrollPane.VERTICAL_SCROLLBAR_ALWAYS & JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); summaryPanel.add(summaryScrollPane); createFilesButton.setText("Create Data Loader CLI Files"); createFilesButton.setActionCommand(CREATE_FILES_ACTION_COMMAND); summaryPanel.add(createFilesButton, ""); jPanel1.add(summaryPanel); /* Results */ resultPanel.setLayout(new MigLayout("wrap 1,w 400")); resultPanel.setBorder( BorderFactory.createTitledBorder( BorderFactory.createEtchedBorder(), "Results", TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, new Font("Courier", Font.BOLD, 14))); statusField = new JTextArea("", 6, 30); statusField.setLineWrap(true); statusField.setWrapStyleWord(true); statusField.setEditable(false); JScrollPane messageScrollPane = new JScrollPane(statusField); messageScrollPane.setVerticalScrollBarPolicy( JScrollPane.VERTICAL_SCROLLBAR_ALWAYS & JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); resultPanel.add(messageScrollPane); /* Not supported by Java 1.5 showFilesButton.setText("Show Files"); showFilesButton.setActionCommand(SHOW_FILES_ACTION_COMMAND); showFilesButton.setEnabled(false); resultPanel.add(showFilesButton,""); */ jPanel1.add(resultPanel); /* End */ contentPanel1.add(jPanel1, java.awt.BorderLayout.CENTER); return contentPanel1; }
private static JPanel initOptionsPane() { JPanel pane = null; ActionAdapter buttonListener = null; // Create an options pane JPanel optionsPane = new JPanel(new GridLayout(4, 1)); // IP address input pane = new JPanel(new FlowLayout(FlowLayout.RIGHT)); pane.add(new JLabel("Host IP:")); ipField = new JTextField(10); ipField.setText(hostIP); ipField.setEnabled(false); ipField.addFocusListener( new FocusAdapter() { public void focusLost(FocusEvent e) { ipField.selectAll(); // Should be editable only when disconnected if (connectionStatus != DISCONNECTED) { changeStatusNTS(NULL, true); } else { hostIP = ipField.getText(); } } }); pane.add(ipField); optionsPane.add(pane); // Port input pane = new JPanel(new FlowLayout(FlowLayout.RIGHT)); pane.add(new JLabel("Port:")); portField = new JTextField(10); portField.setEditable(true); portField.setText((new Integer(port)).toString()); portField.addFocusListener( new FocusAdapter() { public void focusLost(FocusEvent e) { // should be editable only when disconnected if (connectionStatus != DISCONNECTED) { changeStatusNTS(NULL, true); } else { int temp; try { temp = Integer.parseInt(portField.getText()); port = temp; } catch (NumberFormatException nfe) { portField.setText((new Integer(port)).toString()); mainFrame.repaint(); } } } }); pane.add(portField); optionsPane.add(pane); // Host/guest option buttonListener = new ActionAdapter() { public void actionPerformed(ActionEvent e) { if (connectionStatus != DISCONNECTED) { changeStatusNTS(NULL, true); } else { isHost = e.getActionCommand().equals("host"); // Cannot supply host IP if host option is chosen if (isHost) { ipField.setEnabled(false); ipField.setText("localhost"); hostIP = "localhost"; } else { ipField.setEnabled(true); } } } }; ButtonGroup bg = new ButtonGroup(); hostOption = new JRadioButton("Host", true); hostOption.setMnemonic(KeyEvent.VK_H); hostOption.setActionCommand("host"); hostOption.addActionListener(buttonListener); guestOption = new JRadioButton("Guest", false); guestOption.setMnemonic(KeyEvent.VK_G); guestOption.setActionCommand("guest"); guestOption.addActionListener(buttonListener); bg.add(hostOption); bg.add(guestOption); pane = new JPanel(new GridLayout(1, 2)); pane.add(hostOption); pane.add(guestOption); optionsPane.add(pane); // Connect/disconnect buttons JPanel buttonPane = new JPanel(new GridLayout(1, 2)); buttonListener = new ActionAdapter() { public void actionPerformed(ActionEvent e) { // Request a connection initiation if (e.getActionCommand().equals("connect")) { changeStatusNTS(BEGIN_CONNECT, true); } // Disconnect else { changeStatusNTS(DISCONNECTING, true); } } }; connectButton = new JButton("Connect"); connectButton.setMnemonic(KeyEvent.VK_C); connectButton.setActionCommand("connect"); connectButton.addActionListener(buttonListener); connectButton.setEnabled(true); disconnectButton = new JButton("Disconnect"); disconnectButton.setMnemonic(KeyEvent.VK_D); disconnectButton.setActionCommand("disconnect"); disconnectButton.addActionListener(buttonListener); disconnectButton.setEnabled(false); buttonPane.add(connectButton); buttonPane.add(disconnectButton); optionsPane.add(buttonPane); return optionsPane; }
public void initUI() { try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); JPopupMenu.setDefaultLightWeightPopupEnabled(false); frame = new JFrame("Vestige-x Developers Client"); frame.setIconImage( Toolkit.getDefaultToolkit().getImage(signlink.findcachedir() + "Cursor.png")); frame.setLayout(new BorderLayout()); frame.setResizable(false); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JPanel gamePanel = new JPanel(); gamePanel.setLayout(new BorderLayout()); gamePanel.add(this); Dimension dim = Toolkit.getDefaultToolkit().getScreenSize(); int w = 765; int h = 503; int x = (dim.width - w) / 2; int y = (dim.height - h) / 2; frame.setLocation(x, y); gamePanel.setPreferredSize(new Dimension(765, 503)); JMenu fileMenu = new JMenu(" File "); JMenu toolMenu = new JMenu(" Tools "); JMenu infoMenu = new JMenu(" Info "); JMenu toggleMenu = new JMenu(" Toggles "); JMenu profileMenu = new JMenu(" Links "); JButton shotMenu = new JButton("Take Screenshot"); shotMenu.setActionCommand("Screenshot"); shotMenu.addActionListener(this); String[] mainButtons = new String[] {"View Images", "Exit"}; String[] toolButtons = new String[] {"World Map"}; String[] infoButtons = new String[] {"Client Information", "Support"}; String[] toggleButtons = new String[] {"Toggle 10x Damage", "Untoggle 10x Damage"}; String[] profileButtons = new String[] {"Donate", "Vote", "-", "Highscores", "Guides", "YouTube", "Forums"}; for (String name : mainButtons) { JMenuItem menuItem = new JMenuItem(name); if (name.equalsIgnoreCase("-")) { fileMenu.addSeparator(); } else { menuItem.addActionListener(this); fileMenu.add(menuItem); } } for (String name : toolButtons) { JMenuItem menuItem = new JMenuItem(name); if (name.equalsIgnoreCase("-")) toolMenu.addSeparator(); else { menuItem.addActionListener(this); toolMenu.add(menuItem); } } for (String name : infoButtons) { JMenuItem menuItem = new JMenuItem(name); if (name.equalsIgnoreCase("-")) infoMenu.addSeparator(); else { menuItem.addActionListener(this); infoMenu.add(menuItem); } } for (String name : toggleButtons) { JMenuItem menuItem = new JMenuItem(name); if (name.equalsIgnoreCase("-")) toggleMenu.addSeparator(); else { menuItem.addActionListener(this); toggleMenu.add(menuItem); } } for (String name : profileButtons) { JMenuItem menuItem = new JMenuItem(name); if (name.equalsIgnoreCase("-")) toggleMenu.addSeparator(); else { menuItem.addActionListener(this); profileMenu.add(menuItem); } } JMenuBar menuBar = new JMenuBar(); JMenuBar jmenubar = new JMenuBar(); frame.add(jmenubar); menuBar.add(fileMenu); menuBar.add(toolMenu); menuBar.add(infoMenu); // menuBar.add(toggleMenu); menuBar.add(profileMenu); menuBar.add(shotMenu); frame.getContentPane().add(menuBar, BorderLayout.NORTH); frame.getContentPane().add(gamePanel, BorderLayout.CENTER); frame.pack(); frame.setVisible(true); // can see the client frame.setResizable(false); // resizeable frame init(); } catch (Exception e) { e.printStackTrace(); } }
public ChatClient() { super(APPNAME); JPanel topPanel = new JPanel(); JPanel leftPanel = new JPanel(); JPanel buttomPanel = new JPanel(); JPanel roomPanel = new JPanel(); JPanel userPanel = new JPanel(); roomList = new JList(); userList = new JList(); msgTextArea = new JTextArea(); msgTextField = new JTextField(); nameTextField = new JTextField(); submitButton = new JButton("送信"); renameButton = new JButton("名前の変更"); addRoomButton = new JButton("部屋を追加"); enterRoomButton = new JButton("入室"); submitButton.addActionListener(this); submitButton.setActionCommand("submit"); renameButton.addActionListener(this); renameButton.setActionCommand("rename"); addRoomButton.addActionListener(this); addRoomButton.setActionCommand("addRoom"); enterRoomButton.addActionListener(this); enterRoomButton.setActionCommand("enterRoom"); roomPanel.setLayout(new BorderLayout()); roomPanel.add(new JLabel("チャットルーム"), BorderLayout.NORTH); roomPanel.add(new JScrollPane(roomList), BorderLayout.CENTER); roomPanel.add(enterRoomButton, BorderLayout.SOUTH); userPanel.setLayout(new BorderLayout()); userPanel.add(new JLabel("参加ユーザー"), BorderLayout.NORTH); userPanel.add(new JScrollPane(userList), BorderLayout.CENTER); topPanel.setLayout(new FlowLayout()); topPanel.add(new JLabel("名前")); topPanel.add(nameTextField); topPanel.add(renameButton); topPanel.add(addRoomButton); nameTextField.setPreferredSize(new Dimension(200, nameTextField.getPreferredSize().height)); leftPanel.setLayout(new GridLayout(2, 1)); leftPanel.add(roomPanel); leftPanel.add(userPanel); buttomPanel.setLayout(new BorderLayout()); buttomPanel.add(msgTextField, BorderLayout.CENTER); buttomPanel.add(submitButton, BorderLayout.EAST); // テキストエリアはメッセージを表示するだけなので編集不可に設定 msgTextArea.setEditable(false); // コンポーネントの状態を退室状態で初期化 exitedRoom(); this.getContentPane().add(new JScrollPane(msgTextArea), BorderLayout.CENTER); this.getContentPane().add(topPanel, BorderLayout.NORTH); this.getContentPane().add(leftPanel, BorderLayout.WEST); this.getContentPane().add(buttomPanel, BorderLayout.SOUTH); this.setDefaultCloseOperation(EXIT_ON_CLOSE); this.addWindowListener( new WindowAdapter() { public void windowClosing(WindowEvent e) { try { close(); } catch (Exception err) { } } }); connectServer(); // メッセージ受信監視用のスレッドを生成してスタートさせる thread = new Thread(this); thread.start(); // 現在の部屋を取得する sendMessage("getRooms"); }