要素の 1 つ (画像) の位置の設定に問題があります。画面の右下に揃えることができません。さまざまなレイアウトを使用しようとしましたが、思いどおりに動作させることができません。
以下は、現在の様子を表示するための URL です。画像は右下にありますが、これは新しい BorderLayout であり、下部に余分なスペースが作成されるため、残りの部分に合わせたいと思います。赤い四角は、画像を配置する場所を示しています。
以下は私のプログラムのコードです:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;
import java.util.*;
public class Server extends JFrame implements ActionListener{
public static final int PORT = 8060;
private JButton reset, exit;
private JEditorPane messages;
private ImageIcon logo = new ImageIcon("C:src\\images\\logo.png");
private JLabel logoSpot;
Container box = getContentPane();
public static void main(String args[]){
new Server().Networking();
}
public void makeMenu(){
JPanel menu = new JPanel();
reset = new JButton("Reset messages");
exit = new JButton("Exit");
menu.add(reset);
menu.add(exit);
reset.addActionListener(this);
exit.addActionListener(this);
box.add(menu, BorderLayout.EAST);
}
public void setLogo(){
JPanel logoSpace = new JPanel(new BorderLayout());
logoSpot= new JLabel();
logoSpot.setIcon(logo);
logoSpace.add(logoSpot, BorderLayout.EAST);
box.add(logoSpace, BorderLayout.SOUTH);
}
public void makeScreen(){
JPanel screen = new JPanel();
messages = new JEditorPane();
messages.setPreferredSize(new Dimension(800,590));
screen.add(messages);
box.add(screen, BorderLayout.WEST);
}
public Server(){
makeMenu();
makeScreen();
setLogo();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
setSize(1024, 680);
setTitle("Emergency system");
}
@Override
public void actionPerformed(ActionEvent e){
if(e.getSource() == exit){
super.dispose();
}
if(e.getSource() == reset){
messages.setText(" ");
}
}
public void Networking(){
String received=" ";
try{
ServerSocket ss = new ServerSocket(PORT);
while(true){
Socket sock = ss.accept();
BufferedReader in =
new BufferedReader(new InputStreamReader(
sock.getInputStream()));
received = in.readLine();
messages.setText(messages.getText() + received +
" \n\n");
OutputStreamWriter out =
new OutputStreamWriter(sock.getOutputStream());
BufferedWriter bw = new BufferedWriter(out);
bw.write(received);
bw.flush();
}
}catch(Exception e){
e.printStackTrace();
}
}
}