Как обнаружить несколько мониторов на MacBook и назначить кнопки - PullRequest
0 голосов
/ 25 октября 2019

для начала, я просто скажу, что я новичок в Java.

Я хочу создать простое приложение Java с Jframe и некоторыми кнопками, которые делают снимки экрана любых выбранных мониторов. Я использую MacBook и 2 монитора (с разными разрешениями, чем у Mac). Я буду использовать слушатели действий для каждой кнопки. Я искал в сети и увидел, что библиотека GraphicsEnvironment может это сделать (сейчас она обнаруживает все 3 монитора). Итак, как я могу назначить каждый монитор кнопкам Screen1 / 2/3 (вероятно, Screen 1 будет монитором по умолчанию, который является Mac) И функциональность будет такой: если выбран Screen 2, при нажатии кнопки Take Screenshot, только монитор2 будут захвачены. Кроме того, еще один новый вопрос: что я делаю не так для кнопки i ++?

Ниже приведен "пустой" созданный jframe.

Спасибо.

import java.awt.*;
import javax.swing.JTextField;
import java.awt.GraphicsEnvironment;
import java.awt.GraphicsDevice;
import java.awt.HeadlessException;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import static java.lang.String.*;
public class Main {
    public static void main(String[] args) {
        try {
            // Get local graphics environment
            GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment();

            // Returns an array of all of the screen GraphicsDevice objects.
            GraphicsDevice[] devices = env.getScreenDevices();

            int numberOfScreens = devices.length;
            System.out.println("Number of available screens = " + numberOfScreens);
        } catch (HeadlessException e) {
            // We'll get here if no screen devices was found.
            e.printStackTrace();
        }

// Jframe module
        JFrame frame = new JFrame("ScreenShot");
        frame.setTitle("Screenshot");
        JLabel cadru1 = new JLabel("Step:");
        JTextField text1 = new JTextField("1");
        JButton plus1 = new JButton("+");
        JLabel cadru2 = new JLabel("SubStep:");
        JTextField text2 = new JTextField("1");
        JButton plus2 = new JButton("+");
        JButton scr1 = new JButton("Screen 1");
        JButton scr2 = new JButton("Screen 2");
        JButton scr3 = new JButton("Screen 3");
        JButton path = new JButton("Set Path");
        JButton Take = new JButton("Take ScreenShot");

        frame.add(cadru1);
        frame.add(text1);
        frame.add(plus1);
        frame.add(cadru2);
        frame.add(text2);
        frame.add(plus2);
        frame.add(scr1);
        frame.add(scr2);
        frame.add(scr3);
        frame.add(path);
        frame.add(Take);
        frame.setBackground(Color.DARK_GRAY);
        Take.setForeground(Color.red);
        frame.setLayout(new GridLayout(4, 3));
        frame.setSize(200, 400);
        frame.setVisible(true);
        frame.pack();
        frame.setVisible(true);
        public void  actionPerformed(ActionEvent) {
            plus1++;
            cadru1.setText("1" + plus1  );
        })
    }
}
...