gpt4 book ai didi

java - 在全屏模式下调整框架组件的大小

转载 作者:搜寻专家 更新时间:2023-11-01 01:23:06 24 4
gpt4 key购买 nike

我希望我的框架组件始终在屏幕上进行调整,无论屏幕尺寸如何。我在我的笔记本电脑(小屏幕)上绘制框架,当我在另一台大屏幕机器(jar 文件)上运行我的应用程序时,框架组件没有调整大小!

当我在任何机器上将框架置于全屏模式时,如何调整框架组件的大小?

当前布局

MSM GUI

代码

package package_MSM;

import java.awt.Color;

public class MSMGui extends JFrame
{
private static final long serialVersionUID = 1L;
private JPanel contentPane;
private JTextArea textArea;
private JPanel pnlLogo1;
private JLabel lblLogo1;;
private static JButton btnSmpd1;
private static JButton btnSmpd2;
private static JButton btnSmpd3;
private static JButton btnSmpd4;
private static JButton btnSmpd5;
private static JButton btnSmpd6;
private static JButton btnSmpd7;

/**
* Launch the application.
*/

public static void main(String[] args)
{
EventQueue.invokeLater(new Runnable()
{
public void run()
{
try
{
MSMGui frame = new MSMGui();
frame.setExtendedState(Frame.MAXIMIZED_BOTH);
frame.setVisible(true);

}
catch (Exception e)
{
e.printStackTrace();
}
}
});
}

/**
* Create the frame.
*/
public MSMGui()
{
setResizable(true);
setTitle("MSM");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 841, 334);
contentPane = new JPanel();
contentPane.setBackground(Color.BLACK);
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);

JPanel panelSmpd = new JPanel();
panelSmpd.setBounds(10, 69, 804, 105);
panelSmpd.setBackground(Color.BLACK);
contentPane.add(panelSmpd);
panelSmpd.setLayout(null);

JMenuBar menuBar = new JMenuBar();
menuBar.setBackground(UIManager.getColor("MenuBar.background"));
menuBar.setFont(new Font("Segoe UI", Font.PLAIN, 12));
setJMenuBar(menuBar);

JMenu mnMenu = new JMenu("Menu");
menuBar.add(mnMenu);

JMenuItem mntmAlarmStop = new JMenuItem("Stop alarm sound");
mntmAlarmStop.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
stopAlarm();
textArea.append(dateTime()+ " Alarm cleared by the Operator from the Menu Bar\n");
writeTofile(dateTime()+ " Alarm cleared by the Operator from the Menu Bar\n");
}
});
mnMenu.add(mntmAlarmStop);

JMenuItem mntmExit = new JMenuItem("Exit");
mntmExit.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
// display the showOptionDialog
Object[] options = { "OK", "Cancel" };
int choice = JOptionPane.showOptionDialog(null,
"You really want to quit?",
"Quit?",
JOptionPane.YES_NO_OPTION,
JOptionPane.QUESTION_MESSAGE,
null,
options,
options[0]);

// interpret the user's choice
if (choice == JOptionPane.YES_OPTION)
{
System.exit(0);
}
}
});
mnMenu.add(mntmExit);

btnSmpd1 = new JButton("SPD 1");
btnSmpd1.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent arg0)
{
btnSmpd1.setBackground(Color.YELLOW);
stopAlarm();
btnSmpd1.setEnabled(false);
textArea.append(dateTime() + " Alarm Stampede 1 cleared by the Operator\n");
writeTofile(dateTime() + " Alarm Stampede 1 cleared by the Operator\n");
}
});
btnSmpd1.setFont(new Font("Tahoma", Font.BOLD, 15));
btnSmpd1.setBounds(23, 13, 100, 74);
panelSmpd.add(btnSmpd1);
btnSmpd1.setOpaque(true);

btnSmpd2 = new JButton("SPD 2");
btnSmpd2.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent arg0)
{
btnSmpd2.setBackground(Color.YELLOW);
stopAlarm();
btnSmpd2.setEnabled(false);
textArea.append(dateTime() + " Alarm Stampede 2 cleared by the Operator\n");
writeTofile(dateTime() + " Alarm Stampede 2 cleared by the Operator\n");
}
});
btnSmpd2.setFont(new Font("Tahoma", Font.BOLD, 15));
btnSmpd2.setBounds(133, 13, 100, 74);
panelSmpd.add(btnSmpd2);
btnSmpd2.setOpaque(true);

btnSmpd3 = new JButton("SPD 3");
btnSmpd3.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent arg0)
{
btnSmpd3.setBackground(Color.YELLOW);
stopAlarm();
btnSmpd3.setEnabled(false);
textArea.append(dateTime() + " Alarm Stampede 3 cleared by the Operator\n");
writeTofile(dateTime() + " Alarm Stampede 3 cleared by the Operator\n");
}
});
btnSmpd3.setFont(new Font("Tahoma", Font.BOLD, 15));
btnSmpd3.setBounds(243, 13, 100, 74);
panelSmpd.add(btnSmpd3);
btnSmpd3.setOpaque(true);

btnSmpd4 = new JButton("SPD 4");
btnSmpd4.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent arg0)
{
btnSmpd4.setBackground(Color.YELLOW);
stopAlarm();
btnSmpd4.setEnabled(false);
textArea.append(dateTime() + " Alarm Stampede 4 cleared by the Operator\n");
writeTofile(dateTime() + " Alarm Stampede 4 cleared by the Operator\n");
}
});
btnSmpd4.setFont(new Font("Tahoma", Font.BOLD, 15));
btnSmpd4.setBounds(353, 13, 100, 74);
panelSmpd.add(btnSmpd4);
btnSmpd4.setOpaque(true);

btnSmpd5 = new JButton("SPD 5");
btnSmpd5.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent arg0)
{
btnSmpd5.setBackground(Color.YELLOW);
stopAlarm();
btnSmpd5.setEnabled(false);
textArea.append(dateTime() + " Alarm Stampede 5 cleared by the Operator\n");
writeTofile(dateTime() + " Alarm Stampede 5 cleared by the Operator\n");
}
});
btnSmpd5.setFont(new Font("Tahoma", Font.BOLD, 15));
btnSmpd5.setBounds(463, 11, 100, 76);
panelSmpd.add(btnSmpd5);
btnSmpd5.setOpaque(true);

btnSmpd6 = new JButton("SPD 6");
btnSmpd6.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent arg0)
{
btnSmpd6.setBackground(Color.YELLOW);
stopAlarm();
btnSmpd6.setEnabled(false);
textArea.append(dateTime() + " Alarm Stampede 6 cleared by the Operator\n");
writeTofile(dateTime() + " Alarm Stampede 6 cleared by the Operator\n");
}
});
btnSmpd6.setFont(new Font("Tahoma", Font.BOLD, 15));
btnSmpd6.setBounds(573, 11, 100, 76);
panelSmpd.add(btnSmpd6);
btnSmpd6.setOpaque(true);

btnSmpd7 = new JButton("SPD 7");
btnSmpd7.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent arg0)
{
btnSmpd7.setBackground(Color.YELLOW);
stopAlarm();
btnSmpd7.setEnabled(false);
textArea.append(dateTime() + " Alarm Stampede 7 cleared by the Operator\n");
writeTofile(dateTime() + " Alarm Stampede 7 cleared by the Operator\n");
}
});
btnSmpd7.setFont(new Font("Tahoma", Font.BOLD, 15));
btnSmpd7.setBounds(683, 11, 100, 76);
panelSmpd.add(btnSmpd7);
btnSmpd7.setOpaque(true);

JLabel lblTitle = new JLabel("MNOC Stampede Monitor");
lblTitle.setBounds(200, 11, 423, 27);
lblTitle.setHorizontalTextPosition(SwingConstants.CENTER);
lblTitle.setForeground(Color.GRAY);
lblTitle.setHorizontalAlignment(SwingConstants.CENTER);
lblTitle.setFont(new Font("Tahoma", Font.BOLD, 32));
contentPane.add(lblTitle);

scrollPane = new JScrollPane();
scrollPane.setBounds(40, 172, 754, 91);
contentPane.add(scrollPane);

textArea = new JTextArea();
scrollPane.setViewportView(textArea);

ImageIcon image = new ImageIcon("logo.jpg");

pnlLogo1 = new JPanel();
pnlLogo1.setBounds(50, 11, 70, 47);
contentPane.add(pnlLogo1);
pnlLogo1.setLayout(null);
lblLogo1 = new JLabel();
lblLogo1.setBounds(0, 0, 70, 47);
pnlLogo1.add(lblLogo1);
lblLogo1.setOpaque(true);
lblLogo1.setVisible(true);
lblLogo1.setIcon(image);
pnlLogo1.setVisible(true);
}
}

最佳答案

参见 Laying Out Components Within a Container .


好的,我按照您使用布局并调整大小的原始 GUI 的形状破解了一些代码。由于我不清楚应该在哪里分配额外的高度,所以我把它给了文本区域。颜色、字体大小等留给用户作为练习。

截图

StampedeMonitor - small

StampedeMonitor - wide

StampedeMonitor - tall

中南合作中心

package test;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridLayout;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.SwingUtilities;
import javax.swing.border.EmptyBorder;

public class StampedeMonitor {

public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
JFrame f = new JFrame("MSM");
f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

JPanel gui = new JPanel(new BorderLayout(5,5));
gui.setBorder(new EmptyBorder(10,10,10,10));

JPanel logos = new JPanel(new BorderLayout(5,5));
gui.add(logos, BorderLayout.NORTH);
JPanel icon = new JPanel();
// this should be set by the image
icon.setPreferredSize(new Dimension(50,50));
icon.setBackground(Color.RED);
icon.setOpaque(true);
logos.add(icon, BorderLayout.WEST);
logos.add(new JLabel("MNOC Stampede Monitor", JLabel.CENTER));

JPanel controls = new JPanel(new BorderLayout(5,5));
gui.add(controls, BorderLayout.CENTER);
JPanel buttons = new JPanel(new GridLayout(1,0,5,5));
controls.add(buttons, BorderLayout.NORTH);
for (int ii=1; ii<8; ii++) {
JButton button = new JButton("SPD " + ii);
Dimension d = button.getPreferredSize();
// make the buttons twice as tall as default
Dimension big = new Dimension(
(int)d.getWidth(),
(int)d.getHeight()*2);
button.setPreferredSize(big);
buttons.add(button);
}
controls.add(new JScrollPane( new JTextArea(5,10) ));

f.setContentPane(gui);
f.pack();
f.setVisible(true);
}
});
}
}

关于java - 在全屏模式下调整框架组件的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9815922/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com