Java: Как поставить и Paintcomp onet и другие Компоненты? - PullRequest
0 голосов
/ 17 июня 2020

Я хотел бы поместить оба компонента рисования (треугольник) с другими компонентами в центр BorderLayout.Center кадра. Я сделал такой код, но я мог видеть только другие компоненты, и я не видел компонент рисования (треугольник). Не могли бы вы мне помочь?

    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.Container;
    import java.awt.FlowLayout;
    import java.awt.Graphics;

    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JTextArea;
    import javax.swing.JTextField;

    public class OrderMachine extends JFrame {
        private MyPanel panel = new MyPanel();
        private JPanel input = new JPanel();

    public OrderMachine(){
        setTitle("Practice");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        Container c = getContentPane();     
        c.setLayout(new BorderLayout());

        JButton btn1 = new JButton("order");
        btn1.setBackground(Color.RED);
        c.add(btn1,BorderLayout.NORTH);

        JButton btn2 = new JButton("complete");
        btn2.setBackground(Color.GREEN);
        c.add(btn2,BorderLayout.WEST);

        JButton btn3 = new JButton("calculate");
        btn3.setBackground(Color.ORANGE);
        c.add(btn3,BorderLayout.EAST);

        JButton btn4 = new JButton("ready");
        btn4.setBackground(Color.YELLOW);
        c.add(btn4,BorderLayout.SOUTH);


        c.add(panel, BorderLayout.CENTER);


        setSize(400,300);
        setVisible(true);

    }

Я помещаю другие компоненты и компонент paint в тот же класс. Причина выхода из строя?

    class MyPanel extends JPanel{
        private JTextField tf = new JTextField(7);
        private JTextArea ta = new JTextArea(5,8);
        private JLabel jl = new JLabel("menu: ");

        MyPanel(){
        setLayout(new FlowLayout());
        ta.setBackground(Color.YELLOW);
        JButton rot = new JButton("Rotate Button");
        rot.setBackground(Color.CYAN);
        add(ta);
        add(jl);
        add(tf);
        add(rot);
        }
        @Override
        public void paintComponents(Graphics g) {
            super.paintComponents(g);
            g.setColor(Color.BLUE);
            int[] x = {100,120,140};
            int[] y = {50,20,50};       
            g.fillPolygon(x, y, 3);
        }
    }

    public static void main(String[] args) {
    new OrderMachine();
    }

}

1 Ответ

1 голос
/ 17 июня 2020
    public void paintComponents(Graphics g) {
        super.paintComponents(g);
        g.setColor(Color.BLUE);
        int[] x = {100,120,140};
        int[] y = {50,20,50};       
        g.fillPolygon(x, y, 3);
    }

Пользовательское рисование выполняется путем отмены метода paintComponent() (без «s»). Затем будет закрашен фоновый треугольник, а остальные компоненты будут закрашены сверху.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...