如果您运行下面的小样本,您将看到中心区域周围的边框.我不确定为什么会出现这种边界.
当JTable在JScrollPane中时会发生这种情况.我尝试了各种各样的东西去除它,但到目前为止没有运气.没有JScrollPane的JTable没有显示边框.
见下面的示例.TIA.
public class TestScrollPane extends JFrame {
public static void main(String[] args) {
JFrame frame = new TestScrollPane();
JPanel panel = new JPanel();
JTable table = new JTable();
panel.setLayout(new BorderLayout());
panel.add(new JLabel("NORTH"), BorderLayout.NORTH);
panel.add(new JLabel("SOUTH"), BorderLayout.SOUTH);
JScrollPane sp = new JScrollPane(table);
// None of these have any effect
sp.setBorder(null);
sp.getInsets().set(0, 0, 0, 0);
sp.setViewportBorder(null);
sp.getViewport().setBorder(null);
sp.getViewport().getInsets().set(0, 0, 0, 0);
sp.getViewport().setOpaque(true);
panel.add(sp, BorderLayout.CENTER);
// Adding the table alone shows no border
// panel.add(table, BorderLayout.CENTER);
frame.add(panel);
frame.setVisible(true);
}
public TestScrollPane() …Run Code Online (Sandbox Code Playgroud) 尽管经过多次尝试,但我无法得到我想看到的结果 - 文本居中在JLabel中,而JLabel在BorderLayout中居中.我说"有点",因为窗口的右下角应该还有另一个标签"status".这里有一些代码负责:
setLayout(new BorderLayout());
JPanel area = new JPanel();
JLabel text = new JLabel(
"<html>In early March, the city of Topeka," +
" Kansas,<br>temporarily changed its name to Google..." +
"<br><br>...in an attempt to capture a spot<br>" +
"in Google's new broadband/fiber-optics project." +
"<br><br><br>source: http://en.wikipedia.org/wiki/Google_server" +
"#Oil_Tanker_Data_Center</html>", SwingConstants.CENTER);
text.setVerticalAlignment(SwingConstants.CENTER);
JLabel status = new JLabel("status", SwingConstants.SOUTH_EAST);
status.setVerticalAlignment(SwingConstants.CENTER);
Font font = new Font("SansSerif", Font.BOLD, 30);
text.setFont(font);
area.setBackground(Color.darkGray);
text.setForeground(Color.green);
// text.setAlignmentX(CENTER_ALIGNMENT);
// text.setAlignmentY(CENTER_ALIGNMENT);
// text.setHorizontalAlignment(JLabel.CENTER);
// text.setVerticalAlignment(JLabel.CENTER);
Font font2 = new …Run Code Online (Sandbox Code Playgroud) 谷歌搜索文件输入我发现了两种从文件输入文本的方法--fopen和ifstream.以下是两个片段.我有一个文本文件,包含一行我需要读入的整数.我应该使用fopen还是ifstream?
SNIPPET 1 - FOPEN
FILE * pFile = fopen ("myfile.txt" , "r");
char mystring [100];
if (pFile == NULL)
{
perror ("Error opening file");
}
else
{
fgets (mystring , 100 , pFile);
puts (mystring);
fclose (pFile);
}
Run Code Online (Sandbox Code Playgroud)
SNIPPET 2 - IFSTREAM
string line;
ifstream myfile ("example.txt");
if (myfile.is_open())
{
while ( myfile.good() )
{
getline (myfile,line);
cout << line << endl;
}
myfile.close();
}
else
{
cout << "Unable to open file";
}
Run Code Online (Sandbox Code Playgroud) 我刚刚意识到Java中的枚举常量似乎包含了相同类型的所有枚举常量.
例如,以下代码是合法的:
enum State {
enable, disable, deleted;
}
class Test {
public static void main(String[] args) {
for ( State s : State.enable.disable.values() ) {
System.out.println(s);
}
}
}
Run Code Online (Sandbox Code Playgroud)
当我看到输出结果是:
enable
disable
deleted
Run Code Online (Sandbox Code Playgroud)
enable常量是否包含disable常量而不是反直觉甚至不合逻辑,而常量又包含所有State枚举常数?
这种语言设计背后的可能考虑因素是什么?
我有自定义单元格渲染器,并希望删除单元格的边框.
我该怎么做?我试过setBorder但它不起作用.
这是我的渲染器代码:
public class MyTableCellRenderer extends DefaultTableCellRenderer {
private static final long serialVersionUID = -1195682136616306875L;
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
Component c = super.getTableCellRendererComponent(table, value,
isSelected, hasFocus, row, column);
if (!isSelected) {
if (row % 2 == 0 && row != 1) {
c.setBackground(new Color(255, 255, 150));
} else {
c.setBackground(Color.WHITE);
}
} else {
c.setBackground(new Color(255, 230, 255));
}
c.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0));
return c;
}
}
Run Code Online (Sandbox Code Playgroud) 我使用的是Java 8.我有工具栏和按钮.
我想实现以下内容:
怎么做通过CSS?
我到处搜寻,我找不到答案.
如何在java中旋转Rectangle?
这是我的一些代码:
package net.chrypthic.Space;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Space extends JPanel implements ActionListener{
Timer time;
public Space()
{
setVisible(true);
setFocusable(true);
addMouseMotionListener(new ML());
addMouseListener(new ML());
addKeyListener(new AL());
time=new Timer(5, this);
time.start();
}
public void paint(Graphics g)
{
super.paint(g);
Graphics2D g2d = (Graphics2D)g;
g2d.setColor(Color.WHITE);
Rectangle rect2 = new Rectangle(100, 100, 20, 20);
g2d.draw(rect2);
g2d.fill(rect2);
}
public void actionPerformed(ActionEvent ae) {
repaint();
}
public class AL extends KeyAdapter
{
public void keyPressed(KeyEvent e) {
}
public void keyReleased(KeyEvent …Run Code Online (Sandbox Code Playgroud) 我正在尝试实现以下'网格'布局.

该类正在扩展java.awt.Canvas,并在paint函数中绘制这些形状(或行).为什么选择帆布?点击这里,尝试初始化做类似的事情.
更新了MCVE代码以获取上述"布局":
import java.awt.BasicStroke;
import java.awt.BorderLayout;
import java.awt.Canvas;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingConstants;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
@SuppressWarnings("serial")
public class SO_MCVE extends JPanel {
private DrawingCanvas _drawingCanvas = null;
private JButton repaintBtn;
public SO_MCVE() {
super(new BorderLayout());
_drawingCanvas = new DrawingCanvas();
_drawingCanvas.setSize(new Dimension(600, 600));
JLabel repaintLabel = new JLabel(
"<html><div style=\"text-align: center;\">" +
"REPAINT</html>"); …Run Code Online (Sandbox Code Playgroud) 问题:给定任意顺序的一组时间间隔,将所有重叠间隔合并为一,并输出应该只具有互斥间隔的结果.为简单起见,将间隔表示为整数对.例如,让给定的一组区间为{{1,3},{2,4},{5,7},{6,8}}.区间{1,3}和{2,4}彼此重叠,因此它们应合并成{1,4}.类似地,{5,7}和{6,8}应该合并并成为{5,8}
编写一个函数,为给定的一组区间产生一组合并区间.
我的代码:
import java.util.*;
import java.lang.*;
import java.io.*;
class Interval
{
int start;
int end;
Interval() {
start = 0;
end = 0;
}
Interval(int s, int e)
{
start = s;
end = e;
}
}
class Ideone
{
public ArrayList<Interval> merge(ArrayList<Interval> intervals) {
if(intervals.size() == 0)
return intervals;
if(intervals.size() == 1)
return intervals;
Collections.sort(intervals, new IntervalComparator());
Interval first = intervals.get(0);
int start = first.start;
int end = first.end;
ArrayList<Interval> result = new ArrayList<Interval>();
for(int i = 1; …Run Code Online (Sandbox Code Playgroud) 我有一类动物和其他动物从它继承(eq Sheep,Wolf).
我想检查两个对象是否是同一个类,如果是,它应该创建同一个类的新对象,如果不是,它们就是在战斗.
if x and y same object:
#create new object
else:
#fight
Run Code Online (Sandbox Code Playgroud)
有没有比这更好的方法isinstance?
因为,会有更多的动物而不仅仅是2,我认为这样做效率不高:
if isinstance(x, Wolf)
# ...
Run Code Online (Sandbox Code Playgroud)