我试图弄清楚如何在JButton中对齐一些文本,但它似乎比我想象的更具挑战性。在某些方面,我尝试过使用HTML和JLabel,但没有成功。我想做的是,我想模拟一个字母居中的键盘键,右上角有一个数字。
JPanel panel = new JPanel();
LayoutManager layout = new FlowLayout();
panel.setLayout(layout);
String htmlContent = "<html><font align=right>10</font><br><center><font width=100>Some text<font></center><br><font height=20></font></html>";
String secondContent = "<html><sup>HTML</sup><br><font>Multi-line</font>";
JButton nextButton = new JButton(htmlContent);
nextButton.setForeground(new Color(0x000000));
nextButton.setBackground(new Color(0xffffff));
nextButton.setBorderPainted(false);
nextButton.setFocusPainted(false);
nextButton.setBounds(0, 0, 30, 25);
panel.add(nextButton);
JButton secondButton = new JButton(secondContent);
secondButton.setForeground(new Color(0xffffff));
secondButton.setBackground(new Color(0x0062ff));
secondButton.setBorderPainted(false);
secondButton.setFocusPainted(false);
panel.add(secondButton);
JLabel firstLabel = new JLabel("First");
firstLabel.setHorizontalTextPosition(JLabel.RIGHT);
firstLabel.setVerticalTextPosition(JLabel.TOP);
firstLabel.setSize(150,100);
JLabel secondLabel = new JLabel("So much text");
secondLabel.setHorizontalTextPosition(JLabel.CENTER);
secondLabel.setVerticalTextPosition(JLabel.CENTER);
secondLabel.setSize(100,100);
JButton thirdBtn = new JButton();
thirdBtn.setForeground(new Color(0x000000));
thirdBtn.setBackground(new Color(0xbdbdbd));
thirdBtn.setBorderPainted(false);
thirdBtn.setFocusPainted(false);
thirdBtn.add(firstLabel);
thirdBtn.add(secondLabel);
thirdBtn.setPreferredSize(new Dimension(200, 80));
panel.add(thirdBtn);
frame.getContentPane().add(panel, BorderLayout.CENTER);
到目前为止,这是我试图使用的代码来实现这一点,但我看不到我需要的结果,只是不能将文本对齐或使其流向那里。还尝试使用双标签按钮,似乎标签不能对齐关于对方。有办法做到吗?
P.S.忘了提了,我试过在HTML标签中使用align=right或align ='right'或只是'right',但这些都不起作用
结果:
1条答案
按热度按时间lbsnaicq1#
Oracle有一个有用的教程Creating a GUI With Swing。跳过使用NetBeans IDE学习Swing部分。请特别注意Performing Custom Painting部分。
正如我在评论中所说的,为什么不创建一个图像并将其放置在
JButton
中呢?这是我想出的GUI。
要为所有
JButtons
创建图像,只需在循环中调用图像创建方法。下面是完整的可运行代码。