Вот мой Всплеск код:Невозможно создать экран заставки для программы, также проблема цвета?
import java.awt.*;
import javax.swing.*;
public class AddSplash extends JPanel {
public void paintComponent(Graphics g){
super.paintComponent(g);
g.setFont(new Font("Serif", Font.BOLD, 32));
g.drawString("Shape Stamper!", 150, 220);
g.setFont(new Font("Serif", Font.ITALIC, 16));
g.drawString("Programmed by: Null", 150, 245);
}
}
Вот мой Main:
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import java.util.*;
import javax.swing.JComponent;
public class ButtonComponent extends JComponent {
int temp;
Color randColor;
Random generator = new Random();
public ButtonComponent() {
this.temp = temp;
addMouseListener(new MouseHandler());
}
private ArrayList<Rectangle2D> arrOfRect = new ArrayList<>();
private ArrayList<Ellipse2D> arrOfEllipse = new ArrayList<>();
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
for (Rectangle2D e : arrOfRect) {
g.setColor(getRandomColor());
g2.draw(e);
}
for (Ellipse2D e : arrOfEllipse) {
g.setColor(getRandomColor());
g2.draw(e);
}
}
public void add(Point2D p) {
double x = p.getX();
double y = p.getY();
if (Stamper.temp == 1) {
Ellipse2D ellipse = new Ellipse2D.Double(x, y, 100, 100);
arrOfEllipse.add(ellipse);
}
if (Stamper.temp == 2) {
Rectangle2D rectangle2 = new Rectangle2D.Double(x, y, 100, 100);
arrOfRect.add(rectangle2);
}
if (Stamper.temp == 3) {
Rectangle2D rectangle2 = new Rectangle2D.Double(x, y, 150, 100);
arrOfRect.add(rectangle2);
}
if (Stamper.temp == 4) {
Ellipse2D ellipse = new Ellipse2D.Double(x, y, 100, 50);
arrOfEllipse.add(ellipse);
}
}
private class MouseHandler extends MouseAdapter {
public void mousePressed(MouseEvent event) {
add(event.getPoint());
repaint();
}
}
private Color getRandomColor() {
return new Color(generator.nextFloat(), generator.nextFloat(), generator.nextFloat());
}
}
и, наконец, другой класс:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Stamper extends JFrame {
public static int temp = 0;
public static void main(String[] args) {
JFrame frame = new JFrame("Shape Stamper!");
AddSplash splash = new AddSplash();
JPanel container;
JPanel splashtext;
JButton circle = new JButton("Circle");
JButton square = new JButton("Square");
JButton rectangle = new JButton("Rectangle");
JButton oval = new JButton("Oval");
//splashtext.add(splash);
container = new JPanel(new GridLayout(1,4));
container.add(circle);
container.add(square);
container.add(rectangle);
container.add(oval);
circle.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
temp = 1;
}
});
square.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
temp = 2;
}
});
rectangle.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
temp = 3;
}
});
oval.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
temp = 4;
}
});
ButtonComponent shape = new ButtonComponent();
frame.setSize(500, 500);
frame.add(shape, BorderLayout.CENTER);
frame.add(container, BorderLayout.SOUTH);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
Теперь по некоторым причинам я не могу сохранить цвет на созданных фигур по мере их создания. Я бы хотел, чтобы он появился, а затем сохранил цвет. Другая проблема, с которой я сталкиваюсь, заключается в том, что я не могу заставить свой шрифт появляться, а затем уничтожаться или потерять видимость при нажатии кнопки.
Это чрезвычайно полезно, любые мысли о всплеске текста? – user3085119
@ user3085119, 'любые мысли о тексте всплеска? -' - Я не вижу, где вы добавляете компонент AddSplash в графический интерфейс. Даже если вы это сделаете, я сомневаюсь, что это будет отображаться, потому что вы не переопределили метод getPreferredSize(), чтобы вернуть разумный размер для вашей панели, поэтому его размер равен (0, 0), поэтому рисовать нечего. Почему вы делаете обычную картину? Просто создайте JPanel с несколькими JLabels, чтобы отобразить текст. – camickr
спасибо, им все еще хватают основы использования графики с java – user3085119