Java Графика AWT - PullRequest
       173

Java Графика AWT

1 голос
/ 03 мая 2020

Когда я запускаю приведенный ниже код, я не могу видеть цвет фона красным. Это показывает по умолчанию один. Что-нибудь, что я должен добавить к этим строкам?

import java.awt.*;
import java.awt.Graphics;
import javax.swing.*;
public class gfix extends JPanel {
    @Override
    public void paintComponent(Graphics g) {
       super.paintComponent(g);
       g.setColor(Color.red);
       g.fillRect(80, 100, 150, 75);
    }
    public static void main(String[] args){
       gfix gg=new gfix();
       JFrame frame = new JFrame("RISK");
       frame.setSize(800, 600);
       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       JPanel panel = new JPanel();
       panel.setLayout(null);
       frame.add(panel);
       JButton button = new JButton("test");
       button.setBounds(100, 100, 150, 150);
       panel.add(button);
       frame.setVisible(true);
    }
}

Ответы [ 2 ]

1 голос
/ 03 мая 2020

Вы переопределяете painGraphics() в gfix классе, поэтому добавьте gfix объект класса в ваш кадр, а не Java при условии JPanel объект класса.

       gfix gg=new gfix();
       JFrame frame = new JFrame("RISK");
       frame.setSize(800, 600);
       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       //JPanel panel = new JPanel();      Not needed
       //panel.setLayout(null);
       frame.add(gg);
       JButton button = new JButton("test");
       button.setBounds(100, 100, 150, 150);
       gg.add(button);
       frame.setVisible(true);

для g.fillRect(80, 100, 150, 75); дают правильное значение границы панели, чтобы заполнить полный фон панели. ИЛИ используйте int width = getWidth(); int height = getHeight(); в paintGraphics, чтобы получить фактическую высоту и ширину.

0 голосов
/ 04 мая 2020

enter image description here

import java.awt.*;
import javax.swing.*;
import javax.swing.border.EmptyBorder;

public class gfix {

    public static void main(String[] args) {
        JFrame frame = new JFrame("RISK");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JPanel panel = new JPanel();
        panel.setBackground(Color.RED);
        frame.add(panel);
        JButton button = new JButton("test");
        // adjust numbers as needed
        button.setMargin(new Insets(20,40,20,40));
        panel.add(button);
        // adjust numbers as needed
        panel.setBorder(new EmptyBorder(10,40,50,200));
        frame.pack();
        frame.setVisible(true);
    }
}

Другие советы:

  1. Java GUI должны работать на разных ОС, размере экрана, разрешении экрана и др c. используя разные PLAF в разных регионах. Как таковые, они не способствуют идеальному макету пикселей. Вместо этого используйте менеджеры компоновки или их комбинации вместе с отступами макета и границами для пробела .
  2. Предоставление рисунка ASCII или простого чертежа предназначенного макета GUI с минимальным размером и, если необходимо изменить его размер, с большей шириной и высотой - чтобы показать, каким должно быть дополнительное пространство используемый.
  3. Пожалуйста, изучите общую Java номенклатуру (соглашения об именах - например, EachWordUpperCaseClass, firstWordLowerCaseMethod(), firstWordLowerCaseAttribute, если это не UPPER_CASE_CONSTANT) и используйте ее последовательно.
...