JPanel pMeasure = new JPanel();
....
JLabel economy = new JLabel("Economy");
JLabel regularity = new JLabel("Regularity");
pMeasure.add(economy);
pMeasure.add(regularity);
...
Run Code Online (Sandbox Code Playgroud)
当我运行上面的代码时,我得到这个输出:
Economy Regularity
Run Code Online (Sandbox Code Playgroud)
如何获得此输出,每个JLabel在新行上启动?谢谢
Economy
Regularity
Run Code Online (Sandbox Code Playgroud) 我在网上找不到一个,我很惊讶没有一个......但至少有一个在线Java GUI Layoutmanager吗?
有没有办法让网格布局中的单个元素占用网格中的多个位置.示例:我想创建一个占据整个网格行的文本框,有什么办法可以做到这一点吗?
可能重复:
Swing:如何将组件高度设置为容器的高度?
我如何划分JPanel像下面显示的图片有2个面板panel1和panel2 panel1应占70%和panel2 30%或panel1应该大于panel2 ...我试过Gridlayout,边框布局,但它不工作.任何帮助不胜感激.
public class TestApplication extends JApplet {
private static final long serialVersionUID = 1L;
JPanel p1,p2;
public void init(){
setLayout(new GridLayout(3,1));
p1=new JPanel();
p2=new JPanel();
p1.setBackground(Color.RED);
p2.setBackground(Color.GREEN);
add(p1);
add(p2);
}
}
Run Code Online (Sandbox Code Playgroud)
我希望有一个可调整大小的面板,它总是有一个固定深度的顶部绿色面板.即所有高度变化都应仅影响黄色面板.
我的代码几乎没问题,但绿色面板的大小略有不同.
我该怎么做呢?
Panel.setLayout(new BoxLayout(Panel, BoxLayout.Y_AXIS));
Panel.setAlignmentX(Component.LEFT_ALIGNMENT);
JPanel TopPanel = new JPanel();
TopPanel.setPreferredSize(new Dimension(80,150));
TopPanel.setVisible(true);
TopPanel.setBackground(Color.GREEN);
JPanel MainPanel = new JPanel();
MainPanel.setPreferredSize(new Dimension(80,750));
MainPanel.setVisible(true);
MainPanel.setOpaque(true);
MainPanel.setBackground(Color.YELLOW);
Panel.add(TopPanel);
Panel.add(MainPanel);
Run Code Online (Sandbox Code Playgroud)
对于带有图标的JLabel,如果setHorizontalTextPosition(SwingConstants.LEADING)
是,则无论标签有多宽,都会在文本后面立即绘制图标.
这对于列表来说尤其糟糕,因为图标将遍布整个地方,具体取决于每个项目的文本长度.
我跟踪代码,似乎是SwingUtilities#layoutCompoundLabelImpl
,文本宽度只是设置为SwingUtilities2.stringWidth(c, fm, text)
,而图标x设置为跟随文本而不考虑标签宽度.
这是最简单的情况:
import java.awt.*;
import javax.swing.*;
public class TestJLabelIcon
{
public static void main(String args[])
{
EventQueue.invokeLater(new Runnable()
{
public void run()
{
JLabel c = new JLabel("abc");
c.setHorizontalTextPosition(SwingConstants.LEADING);
c.setHorizontalAlignment(SwingConstants.LEADING);
c.setIcon(UIManager.getIcon("FileChooser.detailsViewIcon"));
c.setBorder(BorderFactory.createLineBorder(Color.RED));
JFrame frame = new JFrame();
frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
frame.getContentPane().add(c);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
您可以看到标签始终填充框架但图标保持不变.如果将两个参数都设置为,则会出现镜像问题TRAILING
.
我知道我可以覆盖UI,或使用JPanel等.我只是想知道我是否在JLabel中遗漏了一些简单的东西.如果没有,它似乎是一个Java bug.
仅供参考,这是Windows XP上的jdk1.6.0_06.
我想创建一个包含某种文本元素(JLabel/JTextArea等)的对话框,它是多行的并包装单词.我希望对话框具有固定宽度,但根据文本的大小调整高度.我有这个代码:
import static javax.swing.GroupLayout.DEFAULT_SIZE;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class TextSizeProblem extends JFrame {
public TextSizeProblem() {
String dummyString = "";
for (int i = 0; i < 100; i++) {
dummyString += " word" + i; //Create a long text
}
JLabel text = new JLabel();
text.setText("<html>" + dummyString + "</html>");
JButton packMeButton = new JButton("pack");
packMeButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
pack();
}
});
GroupLayout layout = new GroupLayout(this.getContentPane());
getContentPane().setLayout(layout);
layout.setVerticalGroup(layout.createParallelGroup()
.addComponent(packMeButton)
.addComponent(text)
); …
Run Code Online (Sandbox Code Playgroud) 新的java和全新的网站.我有一个JLabel添加到BorderLayout的中心面板.我希望JLabel能够集中在小组中; setAlignmentX似乎有效,但setAlignmentY没有(标签出现在面板的顶部).这是代码:
centerPanel = new JPanel();
centerPanel.setLayout(new BoxLayout(centerPanel,BoxLayout.Y_AXIS));
JLabel label = new JLabel("This should be centered");
label.setAlignmentX(Component.CENTER_ALIGNMENT);
label.setAlignmentY(Component.CENTER_ALIGNMENT);
centerPanel.add(label);
contentPane.add(centerPanel, BorderLayout.CENTER);
Run Code Online (Sandbox Code Playgroud)
我也尝试过label.setVerticalAlignment(CENTER);但无济于事.我已经在API和Java教程中,在这个网站上以及通过谷歌搜索寻找答案.谢谢!
我正在尝试创建一个刽子手游戏,到目前为止,它正在进行中,但布局设计似乎并没有落实到位!字母表应该以FlowLayout
Hangman图片顶部的顺序结束,底部有"重启","帮助","添加新单词"和"退出"按钮!我究竟做错了什么?
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
public class Hangman extends JFrame
{
int i = 0;
static JPanel panel;
static JPanel panel2;
static JPanel panel3;
public Hangman()
{
JButton[] buttons = new JButton[26];
panel = new JPanel(new FlowLayout());
panel2 = new JPanel();
panel3 = new JPanel();
JButton btnRestart = new JButton("Restart");
btnRestart.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{
}
});
JButton btnNewWord = new JButton("Add New Word");
btnNewWord.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{
try …
Run Code Online (Sandbox Code Playgroud) 我正在努力学习如何制作JAVA程序,我正在使用Swing.我试图在窗口的左上角放置一个按钮,它会一直到达顶部中心.
public void createGUI(){
JFrame frame = new JFrame("My Project");
frame.setDefaultCloseOperation(3);
frame.setSize(400, 350);
frame.setVisible(true);
JPanel panel = new JPanel();
frame.add(panel);
addButtonGUI(panel, new JButton(), "test", 1, 1);
}
public void addButtonGUI(JPanel panel, JButton button, String text, int x, int y){
GridBagConstraints gbc = new GridBagConstraints();
button.setText(text);
button.setEnabled(true);
gbc.gridx = x;
gbc.gridy = y;
gbc.gridwidth = 2;
gbc.weightx = 1.0D;
gbc.fill = 2;
panel.add(button, gbc);
}
Run Code Online (Sandbox Code Playgroud)
我做错了什么或者有更好的方法吗?请帮忙