Пропала кнопка после установки Bground. Лэйблы пропали тоже (При загрузке картинки из проекта src\UI\Bground.jpg
пропадает только кнопка)
Догадываюсь что кнопка просто скрылась за картинкой которая инициализируется как Bground
Вот код:
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import java.io.IOException;
import java.net.URL;
public class Test {
public static class HintTest extends JFrame {
static JTextField input1 = new HintTextField("X1");
static JTextField input2 = new HintTextField("X2");
private JButton button = new JButton("Кнопка");
HintTest() throws IOException {
super("Test");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container container = this.getContentPane();
Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
setSize(dim.width / 2 - this.getSize().width / 2, dim.height / 2 - this.getSize().height / 2);
setLocation(dim.width / 2 - this.getSize().width / 2, dim.height / 2 - this.getSize().height / 2);
input1.setBounds(dim.width / 2 - this.getSize().width / 2 - 200, dim.height / 2 - 50 - this.getSize().height / 2 - 100, 100, 20);
input2.setBounds(dim.width / 2 - this.getSize().width / 2 - 200, dim.height / 2 - this.getSize().height / 2 - 100, 100, 20);
URL url = new URL("https://medialeaks.ru/wp-content/uploads/2020/01/1465221347128633057-600x338.jpg");
JLabel background = new JLabel(new ImageIcon(url));
add(background);
setContentPane(new JLabel(new ImageIcon(url)));
ImageIcon ii = new ImageIcon(url);
ii.getImage();
container.add(input1);
container.add(input2);
container.add(button);
JPanel panel = new JPanel();
panel.setLayout(null);
add(panel);
setVisible(true);
button.setBounds(dim.width / 2 - this.getSize().width / 2 - 200, dim.height / 2 - this.getSize().height / 2, 100, 40);
button.addActionListener(new ButtonEventListener());
}
class ButtonEventListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
HintTest.input1.setText("");
HintTest.input2.setText("");
}
}
static class HintTextField extends JTextField implements FocusListener {
private final String hint;
private boolean showingHint;
private HintTextField(final String hint) {
super(hint);
this.hint = hint;
this.showingHint = true;
super.addFocusListener(this);
}
@Override
public void focusGained(FocusEvent e) {
if (this.getText().isEmpty()) {
super.setText("");
showingHint = false;
}
}
@Override
public void focusLost(FocusEvent e) {
if (this.getText().isEmpty()) {
super.setText(hint);
showingHint = true;
}
}
@Override
public String getText() {
return showingHint ? "" : super.getText();
}
public static class LayeredPaneDemo extends JPanel {
private LayeredPaneDemo() {
setLayout(new BorderLayout());
JLayeredPane layeredPane = new JLayeredPane();
layeredPane.setPreferredSize(new Dimension(300, 310));
Point origin = new Point(10, 20);
String[] layerStrings = {"Red", "Green", "Blue"};
Color[] layerColors = {Color.red, Color.green, Color.blue};
for (int i = 0; i < layerStrings.length; i++) {
JLabel label = createColoredLabel(layerStrings[i], layerColors[i], origin);
layeredPane.add(label, new Integer(i));
origin.x += 35;
origin.y += 35;
}
add(layeredPane, BorderLayout.CENTER);
}
private JLabel createColoredLabel(String text, Color color, Point origin) {
JLabel label = new JLabel(text);
label.setVerticalAlignment(JLabel.TOP);
label.setOpaque(true);
label.setBackground(color);
label.setForeground(Color.black);
label.setBounds(origin.x, origin.y, 140, 140);
return label;
}
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> {
JFrame frame = new JFrame("LayeredPaneDemo");
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
JComponent newContentPane = new LayeredPaneDemo();
newContentPane.setOpaque(true);
frame.setContentPane(newContentPane);
frame.pack();
frame.setVisible(true);
HintTest app = null;
try {
app = new HintTest();
} catch (IOException e) {
e.printStackTrace();
}
app.setVisible(true);
});
}
}
}
}
}
При его запуске откроется два окна первое это моя программа с картинкой второе окно это возможный способ решения моей проблемы (наложение слоёв в java)
Сделал так:
1)Сделал загрузку через url
2)Указал что бы картинка была загружена в Temp
3)Сделал что бы после закрытия файл удалялся
package Test;
import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.net.URL;
class Test {
static class HintTest extends JFrame {
static JTextField input1 = new HintTextField("X1");
static JTextField input2 = new HintTextField("X2");
private JButton button = new JButton("Кнопка");
HintTest() throws IOException {
super("Test");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
setSize(dim.width / 2 - this.getSize().width / 2, dim.height / 2 - this.getSize().height / 2);
setLocation(dim.width / 2 - this.getSize().width / 2, dim.height / 2 - this.getSize().height / 2);
input1.setBounds(dim.width / 2 - this.getSize().width / 2 - 200, dim.height / 2 - 50 - this.getSize().height / 2 - 100, 100, 20);
input2.setBounds(dim.width / 2 - this.getSize().width / 2 - 200, dim.height / 2 - this.getSize().height / 2 - 100, 100, 20);
URL url = new URL( "https://miro.medium.com/max/2836/1*ROagAxRi9uL-jeFLy5wQEQ.png" ); //указывается url к картинке
BufferedImage image = ImageIO.read(url);
String dir = System.getProperty("user.home");
File f1 = new File(dir + "\\Appdata\\Local\\Temp\\Bground"); //указывается путь к файлу куда он будет сохранён
ImageIO.write(image,"png",f1);
ImageIO.write(image,"jpg",f1);
Thread.onSpinWait();
JLabel background = new JLabel(new ImageIcon(dir + "\\Appdata\\Local\\Temp\\Bground"));
add(background);
setContentPane(new JLabel(new ImageIcon(dir + "\\Appdata\\Local\\Temp\\Bground")));
ImageIcon ii = new ImageIcon(dir + "\\Appdata\\Local\\Temp\\Bground");
ii.getImage();
final boolean delete = f1.delete();
if(!delete) {
f1.delete();
}
Container container = this.getContentPane();
container.add(input1);
container.add(input2);
container.add(button);
JPanel panel = new JPanel();
panel.setLayout(null);
add(panel);
setVisible(true);
button.setBounds(dim.width / 2 - this.getSize().width / 2 - 200, dim.height / 2 - this.getSize().height / 2, 100, 40);
button.addActionListener(new ButtonEventListener());
}
}
}
class ButtonEventListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
Test.HintTest.input1.setText("");
Test.HintTest.input2.setText("");
}
}
class HintTextField extends JTextField implements FocusListener {
private final String hint;
private boolean showingHint;
HintTextField(final String hint) {
super(hint);
this.hint = hint;
this.showingHint = true;
super.addFocusListener(this);
}
@Override
public void focusGained(FocusEvent e) {
if (this.getText().isEmpty()) {
super.setText("");
showingHint = false;
}
}
@Override
public void focusLost(FocusEvent e) {
if (this.getText().isEmpty()) {
super.setText(hint);
showingHint = true;
}
}
@Override
public String getText() {
return showingHint ? "" : super.getText();
}
public static void main(String[] args) {
Test.HintTest app = null;
try {
app = new Test.HintTest();
} catch (IOException e) {
e.printStackTrace();
}
assert app != null;
app.setVisible(true);
}
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Решила создать мини скрипт новостной ленты на phpВот содержимое файла news